max*_*axp 0 c# datetime parsing
使用api即可为我提供约会.此日期属于类型,string并以以下格式显示:
Mon Nov 16 19:15:09 +0000 2009
DateTime.TryParse()提供此值时失败.谁能指出我正确的方向?
使用DateTimeOffset类来处理偏移量.
[TestMethod]
public void test()
{
string s = "Mon Nov 16 19:15:09 +0000 2009";
var result = DateTimeOffset.ParseExact(
s,
"ddd MMM dd HH:mm:ss zzz yyyy",
System.Globalization.CultureInfo.InvariantCulture);
Assert.AreEqual(16, result.Day);
Assert.AreEqual(11, result.Month);
Assert.AreEqual(2009, result.Year);
Assert.AreEqual(19, result.Hour);
Assert.AreEqual(15, result.Minute);
Assert.AreEqual(9, result.Second);
Assert.AreEqual(0, result.Offset.Hours);
}
Run Code Online (Sandbox Code Playgroud)
更改字符串中的偏移量 - 例如"0600"然后更改偏移量断言以匹配,它将起作用.
DateTime如果必须,您可以将其转换为 - 但是您丢失了偏移信息; 所以你必须决定是否要将它保留为原始的本地时间(19:15:09),或者你是否要转换为某个标准时间(例如,13:19:05 UTC如果是偏移量+06:00).
如果您需要将其转换为您当地的时间,那将非常有趣 - 因为它取决于2009年当年的DST规则 - 这可能会让您感到非常头疼!
所以,如果你要去,DateTime我建议转换为世界时,然后去那里.将其添加到测试中:
Console.WriteLine(result);
//little bit long winded - but you need the 'Universal' Kind for reliability
Console.WriteLine(
DateTime.SpecifyKind(
new DateTime(result.ToUniversalTime().Ticks),
DateTimeKind.Utc)
);
Run Code Online (Sandbox Code Playgroud)
这输出:
11/16/2009 19:15:09 +06:00
11/16/2009 13:15:09