gpt4 book ai didi

c# - 为什么我的时间增加了两个小时

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

我正在为时间解析而苦苦挣扎。我的输入是以“Z”结尾的时间字符串。我希望那是UTC。当我解析该字符串时,两个小时会添加到结果中。我不知道为什么。使用特定的区域性没有任何区别。

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
string inTime = "2015-04-25T23:39:15Z";
DateTime outTime = DateTime.Parse(inTime, ci);
string outTime_string = outTime.ToString("yyyy-MM-ddTHH:mm:ssZ", ci);
// outTme and outTime_string are both 2015-04-26T01:39:15Z

最佳答案

默认情况下,DateTime.Parse 转换为 Local 的“种类”。 (打印出 outTime.Kind 来验证这一点。)所以它知道源是通用的 - 但它正在将它调整为系统本地时间。请注意,文化与时区无关 - 仅与格式和日历系统有关。

您可以通过指定 DateTimeStyles 值来防止这种情况:

DateTime outTime = DateTime.Parse(inTime, ci, DateTimeStyles.AdjustToUniversal);

此时,outTime.Kind 将为 Utc,并且该值将如预期的那样为 23:39pm。

快速插入:整个 DateTime.Kind 位是一团糟。拥有一个代表三种不同类型值的类型是很糟糕的。你可能想看看我的Noda Time在 .NET 中处理日期/时间的替代方法的项目。

关于c# - 为什么我的时间增加了两个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528925/

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