noo*_*ber 3 .net sharepoint timezone
我需要一个真正的时区大师帮助!
我的目标是编写一个工具(在.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);
Run Code Online (Sandbox Code Playgroud)
结果是:
(GMT-05:00) Indiana (East)
US Eastern Standard Time
Run Code Online (Sandbox Code Playgroud)
看起来没关系,两者都是'印第安纳(东)'.现在,我使用区域转换值:
var dateTime = new DateTime(2011, 05, 26, 14, 55, 00);
var converted = TimeZoneInfo.ConvertTimeFromUtc(dateTime, zone);
Console.WriteLine(converted);
Run Code Online (Sandbox Code Playgroud)
结果是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
Run Code Online (Sandbox Code Playgroud)
我的转换器具有相同的结果.然后我选择了'America/Indiana/Knox':
14:55:00 Thursday May 26, 2011 in UTC converts to
09:55:00 Thursday May 26, 2011 in America/Indiana/Knox
Run Code Online (Sandbox Code Playgroud)
谷歌地图服务显示诺克斯位于西部,所以看起来很正常.
当然,SharePoint使用上一个时区.但是怎么样?CDO代码是否有额外的标志,有助于找到更合适的Knox时区?什么是区域?它的身份是什么?我住在美国以外的地方,所以我对这些区域几乎疯了.
谢谢,
小智 6
使用"东部标准时间"而不是"美国东部标准时间".
直到2006年,印第安纳州并没有参与整个州的夏令时,只有某些地区."美国东部标准时间"代表之前日期/时间的不变时区.现在一切都是"东部标准时间"
在亚利桑那州也有类似的情况,大多数州都没有观察到夏令时(尽管纳瓦霍国家确实如此).使用"美国山地标准时间"代替"山地标准时间".
请注意,添加"US"+区域只是Microsoft识别这些特殊区域的方法.
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |