这是一个快速的,我想解析这种格式的日期“Sun May 23 22:00:00 UTC + 0300 2010”
这是一个有效的UTC DateTime吗?以及如何解析它?我试过了:
DateTime newStartTime = DateTime.ParseExact(hdnNewStartTime.Value, "ddd MM dd HH:mm:ss UTC+0300 yyyy", CultureInfo.CurrentCulture);
然而,这不起作用,任何帮助表示赞赏!
答案 0 :(得分:2)
DateTime dt = DateTime.ParseExact(s,"ddd MMM dd HH:mm:ss UTCzzzz yyyy", System.Globalization.CultureInfo.InvariantCulture);
答案 1 :(得分:2)
它不是标准格式,但你仍然可以解析它。
string format = "ddd mmm dd HH:mm:ss zzzzz yyyy";
string temp = "Sun May 23 22:00:00 UTC+0300 2010";
DateTime time = DateTime.ParseExact(temp, format, CultureInfo.InvariantCulture);
答案 2 :(得分:1)
这不是标准的.NET格式,因此您可能需要手动解析它。 UTC+0300
位表示时区,其他所有内容都是日期和时间的一部分。
答案 3 :(得分:1)
我尝试了@johncatfish提供的解决方案,它完成了我的期望。我认为你真的想保留时区信息。
[Test()]
public void TestCaseWorks ()
{
string format = "ddd MMM dd HH:mm:ss UTCzzzzz yyyy";
string temp = "Sun May 23 22:00:00 UTC+0300 2010";
DateTime time = DateTime.ParseExact(temp, format, CultureInfo.InvariantCulture);
Assert.AreEqual(DayOfWeek.Sunday, time.DayOfWeek);
Assert.AreEqual(5, time.Month);
Assert.AreEqual(23, time.Day);
Assert.AreEqual(0, time.Minute);
Assert.AreEqual(0, time.Second);
Assert.AreEqual(2010, time.Year);
// Below is the only actually useful assert -- making sure the
// timezone was parsed correctly.
// In my case, I am GMT-0700, the target time is GMT+0300 so
// 22 + (-7 - +3) = 12 is the expected answer. It is an exercise
// for the reader to make a robust test that will work in any
// timezone ;).
Assert.AreEqual(12, time.Hour);
}
答案 4 :(得分:0)
对不起我之前的回答非常简单。 用你的日期格式用MMM替换MM,应该没问题。
答案 5 :(得分:0)