這種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