【问题标题】:TimeZones, CDO, US Eastern Standard Time时区、CDO、美国东部标准时间
【发布时间】:2011-05-31 19:20:52
【问题描述】:

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

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

现在,我的单元测试失败,其值如下:CDO 为 34,UTC 时间为 2011-05-26 14:55:00。从 GUI 方面来看,时区看起来像“(GMT-05:00) Indiana (East)”。在我的地图中,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

看起来没问题,两者都是“印第安纳州(东部)”。现在,我使用区域来转换值:

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 地图服务显示诺克斯位于更偏西的位置,因此看起来很正常。

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

谢谢,

【问题讨论】:

  • 我不知道如何解决您的问题,但这篇文章可能会对msdn.microsoft.com/en-us/library/ms197282.aspx 有所启发。如果它提到的其中一种方法对 26.05.2011 10:55:00 返回错误的结果,您可以尝试反编译适当的 SharePoint 程序集,看看里面发生了什么。

标签: .net sharepoint timezone


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案2】:

如果您遇到的问题与我的类似(时区似乎工作不正确),答案是:尝试另一个时区。例如,我发现“SA 太平洋标准时间”是我所需要的。

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 2022-06-29
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多