[英]Parsing DateTime
如何将 1900-01-01 00:00:00Z 解析为 DateTime object?
string temp = "1900-01-01 00:00:00Z";
CultureInfo provider = CultureInfo.InvariantCulture;
var date = DateTime.ParseExact(temp, "yyyy-MM-dd hh:mm:ssZ", provider);
这返回了我:
1899 年 12 月 31 日下午 7:00:00
我猜你在美国东部时间。 它从时间中减去 5 小时。 也许这是因为您如何打印时间? 尝试在 GMT 中打印。 或者你可以用你当地的时区来解析它。
你如何显示价值? 我怀疑它只是将您的本地时区应用于日期。
例如,尝试打印:
date.Year
date.Kind
date.Hour
我的猜测是您会看到date
实际上是具有正确值的 UTC DateTime
。
不幸的是,.NET 正在为您隐式执行时区转换,但是 .NET 中的日期和时间类型无论如何都会留下一些不足之处:(
另一种方法是使用DateTimeOffset
,它应该使它稍微清晰一些。
您可以使用此代码
DateTime a;
var dt = DateTime.TryParse("30/05/1970",out a);
默认情况下,给定的时间会调整为您机器的本地时区。 date.Kind
应该反映这一点。 如果您希望将时间调整为世界时 (UTC),请使用DateTimeStyles.AdjustToUniversal
标志作为ParseExact
的第四个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.