gpt4 book ai didi

c# - DateTime.ToString() 不转换时间

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:55 26 4
gpt4 key购买 nike

看起来时间在转换过程中会自动更改。我的输入是 17:15:25。但是,它会转换为 13:15:25可能是什么原因?

string testDate = Convert.ToDateTime("2016-03-24T17:15:25.879Z")
.ToString("dd-MMM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);

我得到的 testDate 结果是:24-Mar-2016 13:15:25

最佳答案

输入中的 Z 表示 UTC 时间,但 Convert.ToDateTime 的默认行为是将结果转换为本地时间。如果您查看 Convert.ToDateTime("2016-03-30T17:15:25.879Z").Kind 的结果,您会看到它是 Local

我建议使用 DateTime.ParseExact,您可以在其中指定所需的确切 行为,例如保留 UTC 时间:

var dateTime = DateTime.ParseExact(
"2016-03-30T17:15:25.879Z",
"yyyy-MM-dd'T'HH:mm:ss.FFF'Z'",
CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal);
Console.WriteLine(dateTime); // March 30 2016 17:15 (...)
Console.WriteLine(dateTime.Kind); // Utc

然后您可以根据需要将该值转换为字符串。

当然,我真的建议使用我的 Noda Time相反,您可以在项目中解析为 InstantZonedDateTime ,它知道它在 UTC 中... IMO,DateTime is simply broken ,正是由于您遇到的问题类型。

关于c# - DateTime.ToString() 不转换时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36357939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com