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

标签 mono exchangewebservices

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

Microsoft.Exchange.WebServices.Data.ServiceResponseException 已被抛出 “找不到具有指定 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(我还设置了偏移量、长名称等)。

关于mono - 与 OS X 上的 Mono 相比,Windows 上 .NET 3.5 的 TimeZoneInfo 实例有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252669/

相关文章:

C# Mono+Winforms MessageBox问题

calendar - Exchange Web 服务创建 session 请求工作示例

c# - 在 outlook 中显示 Outlook 约会扩展属性

outlook - 如何使用 EWS 从 Outlook 联系人读取扩展属性

powershell - 单个 session 中多个邮箱的Powershell EWS SubscribetoPullNotifications

c# - 连接到 EWS (Exchange 2016)

mono - 在哪里可以下载真正的 MonoDevelop Windows 二进制文件?

eclipse - XobotOS 的构建问题

c# - 使用 mono 编译应用程序

visual-studio - 单声道开发和 Visual Studio 兼容性