繁体   English   中英

解析日期时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM