gpt4 book ai didi

.net - 时区、CDO、美国东部标准时间

转载 作者:行者123 更新时间:2023-12-01 11:05:38 26 4
gpt4 key购买 nike

我需要实时时区大师的帮助!

我的目标是编写一个工具(在 .Net 中)来显示来自具有选定时区偏移量的 SharePoint 数据库的日期时间值。我发现 SharePoint 在其数据库中将日期时间值保留为 UTC。它用时区偏移量显示它们,存储为 int (0 .. ~50)。一点调查显示 int 值是 CDO 代码。除了我自己写的基于不同来源的手动映射之外,没有其他方法可以转换 CDO 代码。

现在,我有一个失败的单元测试,其值如下:CDO 是 34,UTC 时间是 2011-05-26 14:55:00。从 GUI 端看,时区看起来像“(GMT-05:00) Indiana (East)”。在我的 map 中,34 对应于“美国东部标准时间”时区 ID。

var id = "US Eastern Standard Time";
var zone = TimeZoneInfo.FindSystemTimeZoneById(id);
Console.WriteLine(zone);
Console.WriteLine(zone.StandardName);

结果是:

(GMT-05:00) Indiana (East)
US Eastern Standard Time

看起来还可以,都是“Indiana (East)”。现在,我使用区域来转换值:

var dateTime = new DateTime(2011, 05, 26, 14, 55, 00);
var converted = TimeZoneInfo.ConvertTimeFromUtc(dateTime, zone);
Console.WriteLine(converted);

结果是 26.05.2011 10:55:00。但是 SharePoint 将其显示为 26.05.2011 09:55:00!这就是为什么我的单元测试失败了。我发现了 timezoneconverter.com 在线工具。它无法将时区设置为 CDO 或 .Net 时区 ID,因此我选择了“America/Indiana/Indianapolis”:

14:55:00 Thursday May 26, 2011 in UTC converts to
10:55:00 Thursday May 26, 2011 in America/Indiana/Indianapolis

我的转换器有相同的结果。然后我选择了“美国/印第安纳/诺克斯”:

14:55:00 Thursday May 26, 2011 in UTC converts to
09:55:00 Thursday May 26, 2011 in America/Indiana/Knox

Google map 服务显示诺克斯位于更靠西的位置,因此看起来很正常。

毫无疑问,SharePoint 使用最后一个时区。但是如何? CDO 代码是否有额外的标志来帮助找到更合适的 Knox 时区?什么是区?它的编号是什么?我住在美国以外的地方,所以我几乎对这些区域感到疯狂。

谢谢,

最佳答案

使用“东部标准时间”而不是“美国东部标准时间”。

直到 2006 年,印第安纳州才参与全州的夏令时,只有某些地区参与。 “美国东部标准时间”表示较早日期/时间的不变时区。现在一切都是“东部标准时间”

亚利桑那州也有类似的情况,该州的大部分地区都不遵守夏令时(但纳瓦霍民族遵守)。那里使用“美国山地标准时间”而不是“山地标准时间”。

请注意,添加“US”+ 区域只是 Microsoft 识别这些特殊区域的方法。

关于.net - 时区、CDO、美国东部标准时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192469/

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