我应该如何在约会项

时间:2016-07-25 10:34:45

标签: outlook exchange-server mapi

我们已经开发并且一直在Exchange / Office 365和我们定制的日历应用程序之间使用同步服务。然后我们的客户使用标准的连接方式,使用他们的iphone,ipad,Android手机/平板电脑等来查看这些约会(最初来自我们的日历软件)

这个系统工作得很好,但有一定的ios更新(不记得哪个,但我们现在有问题)我们使用我们的同步程序创建的全天预约项目,在ipads和iphone上显示2天而在Outlook和Android手机/平板电脑中,相同的约会项目只在一天内正确显示。

我发现我们不会在使用我们的同步程序创建的约会项中创建约会时区定义和显示以及约会时间区域定义。如果我将我在outlook中创建的约会项目中的这些(二进制blob)值复制到我使用我们的同步程序(使用Outlookspy)创建的约会项目之一,则约会项目开始在iphone和ipad上正确显示。

我现在的问题是如何在同步程序中创建previewtimezonedefinitionenddisplay和appointmenttimezonedefinitionstartdisplay。更具体地说,我如何生成二进制数据以及它实际包含哪些内容?我似乎无法在谷歌或任何示例中找到有关此内容的更多信息。并且我不想用固定值对其进行硬编码,因为我不知道这是否会产生一些副作用。

1 个答案:

答案 0 :(得分:0)

关于MSDN的文档: https://msdn.microsoft.com/en-us/library/ee158467(v=exchg.80).aspxhttps://msdn.microsoft.com/en-us/library/ee219682(v=exchg.80).aspx

OutlookSpy在显示结构时解析结构:

Major ver:  0x02
Minor ver : 0x02
cbHeader  : 0x0030
Reserved  : 0x0002
cchKeyName: 0x0015
KeyName      : Pacific Standard Time
cRules       : 0x0001
  Major ver:  0x02
  Minor ver : 0x02
  Reserved  : 0x003E
  TZRule flags  : TZRULE_FLAG_EFFECTIVE_TZREG
  wYear  : 1601 (0x0641)
  X      : 0100000001000000000000000000
  lBias  : 480 (0x000001E0)
  lStandardBias  : 0 (0x00000000)
  lDaylightBias  : -60 (0xFFFFFFC4)
  stStandardDate : 
    wYear        : 0 (0x0000)
    wMonth       : 11 (0x000B)
    wDayOfWeek   : 0 (0x0000)
    wDay         : 1 (0x0001)
    wHour        : 2 (0x0002)
    wMinute      : 0 (0x0000)
    wSecond      : 0 (0x0000)
    wMilliseconds: 0 (0x0000)
  stDaylightDate : 
    wYear        : 0 (0x0000)
    wMonth       : 3 (0x0003)
    wDayOfWeek   : 0 (0x0000)
    wDay         : 2 (0x0002)
    wHour        : 2 (0x0002)
    wMinute      : 0 (0x0000)
    wSecond      : 0 (0x0000)
    wMilliseconds: 0 (0x0000)