Windows上的.NET 3.5的TimeZoneInfo实例与OS X上的Mono相比有什么区别吗?

时间:2011-03-09 21:55:56

标签: mono exchangewebservices

我正在尝试在OS X上使用Mono调用EWS(Exchange版本2007 SP1)。我可以连接到服务并进行身份验证,但我尝试进行的任何调用都会导致异常,如下所示:

已抛出Microsoft.Exchange.WebServices.Data.ServiceResponseException “无法找到具有指定ID的时区。”

我尝试过指定几个不同的ID,但都会产生相同的响应。我开始怀疑TZI ID本身在平台之间是否有所不同。如果是这样,有人知道如何解决这些差异吗?

1 个答案:

答案 0 :(得分:5)

两个系统上的时区ID确实存在差异。我使用以下代码遍历每个系统上的时区,并注意我感兴趣的时区的差异:

    foreach (TimeZoneInfo tz in TimeZoneInfo.GetSystemTimeZones()){
                    Console.WriteLine("{0}, {1}, {2}, {3}", tz.Id,
                           tz.DisplayName, tz.StandardName, tz.DaylightName);

            }

然后我使用 CreateCustomTimeZone 方法构建了一个模仿Windows设置的实例:

    TimeZoneInfo newtz = TimeZoneInfo.CreateCustomTimeZone("Central Standard Time",
               tzi.BaseUtcOffset, "(GMT-06:00) Central Time (US & Canada)", 
               "Central Standard Time");

我在服务调用中使用了该实例。我猜我只需要正确的ID(我也设置了偏移量,长名称等)。