繁体   English   中英

日期时间解析问题

[英]Issue with datetime parsing

当我尝试使用 TryParse 方法解析"2017-09-25T11:06:55+00:00"日期字符串时,我得到以下输出:

{9/25/2017 7:06:55 AM}

所以,看起来上午 11 点正在变成上午 7 点。不确定为什么会发生这种情况? 是因为+00:00?? 我需要做什么才能使解析的 Datetime 输出相同:即{9/25/2017 11:06:55 AM}

我尝试使用当前语言环境/文化和日期时间样式。 假设本地但没有运气。 (注:我在东部时区)

谢谢。

您使用的是 UTC 时区 (+00:00),但显然您或您的 PC 位于 -04:00 时区。

如果您可以使用 DateTimeOffset,那么我倾向于使用它。 您可以保留时区信息,并且可以访问此对象的本地和 UTC 日期时间属性。

        var dt = DateTimeOffset.Parse("2017-09-25T11:06:55+00:00");
        Console.WriteLine(dt.DateTime);         // 9-25 at 11:06
        Console.WriteLine(dt.UtcDateTime);      // 9-25 at 11:06
        Console.WriteLine(dt.LocalDateTime);    // 9-25 at 07:06

如果你知道你总是要处理 UTC,你可以通过调整到通用来解析,如下所示:

        var dt = DateTime.Parse("2017-09-25T11:06:55+00:00", CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal);
        Console.WriteLine(dt); // 9-25 at 11:06

当您最初解析它时,它是正确的值,它刚刚调整到您的时区。 您可以使用ToUniversalTime强制执行它:

DateTime.Parse("2017-09-25T11:06:55+00:00").ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss tt")

输出

"2017/09/25 11:06:55 AM"

您想正确解析 UTC DateTime 并使用 9/25/2017 11:06:55 AM 而不是 9/25/2017 7:06:55 AM。 +00:00 不是正确的 UTC 格式,您需要将其更改为“2017-09-25T11:06:55z”。

这是工作示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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