回答
它無法解析該字符串,因爲「UTC」不是有效的時區指示符。
UTC時間加上一個「Z」的時間字符串的結尾表示,讓您的解析代碼應該是這樣的:
DateTime.Parse("Tue, 1 Jan 2008 00:00:00Z");
從Wikipedia article on ISO 8601
如果時間是UTC,在沒有 空間的時間之後直接添加'Z' 。 'Z'是UTC時差爲零的區域指示符 。 「09:30 UTC」是 因此表示爲「09:30Z」或 「0930Z」。 「14:45:15 UTC」將是 「14:45:15Z」或「144515Z」。
UTC時間也被稱爲'祖魯'時間, 因爲'祖魯'是北約音標 'Z'的字母表單詞。
不知道爲什麼,但你可以在一個try/catch包DateTime.ToUniversalTime並獲得相同的導致更多的代碼。
祝你好運。
ToUniversalTime永遠不會拋出異常 – porges 2012-03-09 02:07:45
你需要指定格式:
DateTime date = DateTime.ParseExact(
"Tue, 1 Jan 2008 00:00:00 UTC",
"ddd, d MMM yyyy HH:mm:ss UTC",
CultureInfo.InvariantCulture);
不錯的建議,但如果提供的日期字符串最後不包含UTC,則會失敗。假設你傳遞了一個最後有+01的日期字符串,它會導致FormatException。取決於他想要做什麼,我想。 – 2009-11-18 15:22:50
或使用AdjustToUniversal的DateTimeStyle在調用
DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
我試過了,它似乎沒有工作 – Dve 2009-11-18 15:20:46
這實際上起作用。 我用這個代碼,並從UTC字符串得到正確的UTC日期時間: DateTime.TryParseExact( 「2012-01-30T00:28:00Z」, 「YYYY-MM-DDTHH:MM:SSZ」,CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal,out timeValue)); – Roboblob 2012-01-30 00:50:52
This one works too,Utc in and out,no format,no Z required:DateTime.Parse(「2013/8/3 1:02:41」,CultureInfo.InvariantCulture,DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal); – crokusek 2013-10-04 02:10:26
這不但是一個有效的格式,「星期二,2008年00 1月1日:00:00 GMT「是。
文檔說是這樣的:
,其包括時區信息,並且符合ISO 8601例如一個字符串,第一以下兩個字符串指定協調世界時(UTC);所述第二指定時間中比UTC較早7小時的時區:
2008-11-01T19:35:00.0000000Z
包含GMT指示符和符合RFC 1123的時間格式的字符串。例如:
週六,2008年11月01日19時35分零零秒GMT
,包括隨着時區偏移信息的日期和時間的字符串。例如:
2009年3月1日5時42分零零秒-5:00
在與此格式相似的日期字符串中簡單替換「UTC」和「GMT」效果很好,感謝提示。 – 2015-04-20 16:43:33
雖然請注意,這將爲我返回一個'DateTime','Kind'爲'Local'。看起來像解決方法是使用[DateTimeOffset.Parse](http://stackoverflow.com/a/14774345/1028230)(然後'x.UtcDateTime'),如果你想確保你沒有脫離UTC在您的解析過程中。 – ruffin 2016-11-09 17:02:47
正確解析,而不改變它在這個問題給出的字符串,請使用下列內容:
using System.Globalization;
string dateString = "Tue, 1 Jan 2008 00:00:00 UTC";
DateTime parsedDate = DateTime.ParseExact(dateString, "ddd, d MMM yyyy hh:mm:ss UTC", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal);
這實現使用一個字符串來指定正在分析的日期字符串的確切格式。DateTimeStyles參數用於指定給定的字符串是一個協調的通用時間字符串。
假設您爲日期時間使用格式「o」,所以您有「2016-07-24T18:47:36Z」,有一個非常簡單的方法來處理這個問題。
致電DateTime.Parse("2016-07-24T18:47:36Z").ToUniversalTime()
。
當您撥打DateTime.Parse("2016-07-24T18:47:36Z")
時會發生什麼,您將得到一個設置爲當地時區的DateTime
。所以它將它轉換爲當地時間。
ToUniversalTime()
將其更改爲UTC DateTime
並將其轉換回UTC時間。
我一直在我的頭上打了幾個小時在這個...... thx! – Corelgott 2017-11-09 11:31:49
只需使用:
var myDateUtc = DateTime.SpecifyKind(DateTime.Parse("Tue, 1 Jan 2008 00:00:00"), DateTimeKind.Utc);
if (myDateUtc.Kind == DateTimeKind.Utc)
{
Console.WriteLine("Yes. I am UTC!");
}
您可以使用在線C#編譯器測試此代碼:
我希望它能幫助。
只需更換 「UTC」 與 「GMT」 - 簡單,不破壞正確格式的日期:
DateTime.Parse("Tue, 1 Jan 2008 00:00:00 UTC".Replace("UTC", "GMT"))
- 1. JavaScript - 解析UTC日期
- 2. 爲什麼我的日期不解析
- 3. 爲什麼java日期不可解析?
- 4. 爲什麼NSDateFormatter不能解析這個日期?
- 5. 爲什麼.NET不能用時區解析日期字符串?
- 6. 無法解析的UTC日期時間
- 7. 爲什麼我會用GSON解析一個有效的UTC日期的異常?
- 8. 當通過SimpleDateFormat解析UTC字符串到日期時解析日期錯誤
- 9. 不知道什麼格式的日期能夠解析它[1252457867]'
- 10. DateTime.Parse更改日期?
- 11. DateTime.Parse日期格式
- 12. 爲什麼DateTime.Parse這麼慢?
- 13. 解析一個UTC日期字符串到日期在C#
- 14. 如何分析UTC日期
- 15. 爲什麼SimpleDateFormat解析不正確的日期?
- 16. 爲什麼不是read_csv()解析我的日期?
- 17. 爲什麼不是telligent的RSS.Net fork解析日期?
- 18. 爲什麼我得到不可解析的日期異常?
- 19. 爲什麼日期不適合UTC設置的時間?
- 20. 解析日期和轉換西歐標準時間爲UTC
- 21. 如何將這些字符串解析爲UTC日期?
- 22. 爲什麼Scrapy不能抓取/解析?
- 23. 爲什麼Restkit不能正確解析?
- 24. 爲什麼我不能解析「+1」int?
- 25. 爲什麼不能解析DateTime?
- 26. 爲什麼我不能用NSDateFormatter正確解析這個日期字符串?
- 27. 爲什麼org.joda.time.DateTimeFormatter不能使用millis正確解析自定義日期時間?
- 28. Date.js解析ISO 8601 UTC日期不正確
- 29. Java日期不解析日
- 30. 功能解析日期
IE9仍錯誤地將 「UTC」 當你使用'新的Date()toUTCString(。 )'in Javascript – 2012-07-05 10:16:10