Windows上.NET 3.5的TimeZoneInfo实例与OS X上的Mono实例之间是否存在差异?

Windows上.NET 3.5的TimeZoneInfo实例与OS X上的Mono实例之间是否存在差异?,mono,exchangewebservices,Mono,Exchangewebservices,我正在尝试在OS X上使用Mono调用EWS(Exchange版本2007 SP1)。我可以连接到该服务并进行身份验证,但我尝试进行的任何调用都会导致以下异常: 已引发Microsoft.Exchange.WebServices.Data.ServiceResponseException “找不到具有指定ID的时区。” 我尝试指定了几个不同的ID,所有这些ID都会产生相同的响应。我开始怀疑TZI ID本身在不同平台之间是否不同。如果是这样,有人知道如何解决这些差异吗?两个系统上的时区ID之间确实

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

已引发Microsoft.Exchange.WebServices.Data.ServiceResponseException “找不到具有指定ID的时区。”


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

两个系统上的时区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(我还设置了偏移量、长名称等)。

为了从服务调用中获得准确的时间响应,重要的是确保其余TimeZoneInfo属性正确。我在上面的第二组代码中包括了偏移规则,例如:
TimeZoneInfo newtz=TimeZoneInfo.CreateCustomTimeZone(“中央标准时间”,tzi.BaseUtcOffset,”(GMT-06:00)中央时间(美国和加拿大)”,“中央标准时间”,“中央夏时制”,tzi.GetAdjustmentRules())