回答
它无法解析该字符串,因为“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. 为什么我的日期不解析
- 2. 为什么.NET不能用时区解析日期字符串?
- 3. 为什么NSDateFormatter不能解析这个日期?
- 4. 为什么我会用GSON解析一个有效的UTC日期的异常?
- 5. DateTime.Parse更改日期?
- 6. 不知道什么格式的日期能够解析它[1252457867]'
- 7. 如何分析UTC日期
- 8. 为什么我得到不可解析的日期异常?
- 9. 为什么不是telligent的RSS.Net fork解析日期?
- 10. 为什么SimpleDateFormat解析不正确的日期?
- 11. 为什么日期不适合UTC设置的时间?
- 12. 解析日期和转换西欧标准时间为UTC
- 13. 如何将这些字符串解析为UTC日期?
- 14. 为什么我不能解析“+1”int?
- 15. 为什么Restkit不能正确解析?
- 16. 为什么Scrapy不能抓取/解析?
- 17. 为什么我不能用NSDateFormatter正确解析这个日期字符串?
- 18. Java日期不解析日
- 19. NSDateFormatter不能解析德语日期
- 20. .NET为什么将UTC日期更改为服务器时区?
- 21. 为什么Jericho解析器不能解析这个HTML代码?
- 22. PHP - 将日期转换为UTC日期
- 23. 简单的日期格式不能正确解析日期
- 24. 为什么这个日期时间解析失败“02/13/2013”?
- 25. 为什么我需要在Grails中解析日期?
- 26. 使用DateFormat解析日期,它为什么会起作用?
- 27. 用parse_date_time解析日期:为什么“2004-04-04 02:00”失败?
- 28. 解析日期不正确
- 29. 解析日期不工作
- 30. LinqToExcel不解析日期
IE9仍错误地将 “UTC” 当你使用'新的Date()toUTCString(。 )'in Javascript – 2012-07-05 10:16:10