这种stirng 2010-06-19T06:28:01.077148400Z
属于哪种格式?Windows事件日志的时间格式是什么?
它代表6/19/2010 11:58:01 AM。
我试着解析字符串DateTime.Parse()和DateTime对象表示上述时间。现在我想将该DateTime对象再次转换为格式。我怎样才能做到这一点?
这种stirng 2010-06-19T06:28:01.077148400Z
属于哪种格式?Windows事件日志的时间格式是什么?
它代表6/19/2010 11:58:01 AM。
我试着解析字符串DateTime.Parse()和DateTime对象表示上述时间。现在我想将该DateTime对象再次转换为格式。我怎样才能做到这一点?
根据您的用户信息,看起来您位于印度时区 - New Delhi区域比UTC提前5小时30分钟。日期/时间字符串末尾的“Z”表示UTC,这是有意义的:UTC时区的6:28是11:58。
您可以使用本地DateTime
并使用ToUniversalTime
将其转换为UTC - 但如果您想获取当前时间,则可以使用DateTime.UtcNow
开始。
一旦你在UTC一个DateTime
,此格式字符串会以同样的方式对其进行格式化:
yyyy-MM-ddTHH:mm:ss.fffffff00K
这是非常相似的往返格式,只需与额外的两个零结束。那些硬编码为0,因为DateTime
没有超过十分之一微秒的精度,而您的示例字符串已将其降至纳秒。
例如:
DateTime now = DateTime.UtcNow;
string s = now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff00K",
CultureInfo.InvariantCulture);
创造这样的事情:
2010-06-19T13:57:15.885578200Z
这看起来像一个日期时间的表示使用Round-trip ("O", "o") Format Specifier:
var s = "2010-06-19T06:28:01.077148400Z";
var dt = DateTime.Parse(s, null, DateTimeStyles.RoundtripKind);
Console.WriteLine(dt.ToString("o")); // prints "2010-06-19T06:28:01.0771484Z"
你看过打印结果吗? “2010-06-19T06:28:01.0771484Z” - 注意缺失的两个最后的0。 – 2010-06-19 13:59:20
Skeet!你赢了!但是这一次! \ *摇动拳头* – dtb 2010-06-19 14:00:38
它看起来像在round-trip format格式化UTC。
不太确切:在秒数上有9位小数位,而不是7位。 – 2010-06-19 13:58:49
我站好了。再次。 :) – 2010-06-19 14:21:10
谢谢,我从答案XIII给出了我的想法。但你应该给予详细解答。 – 2010-06-19 16:49:56