Web services Exchange Web服务,在其他时区创建全天应用程序

Web services Exchange Web服务,在其他时区创建全天应用程序,web-services,soap,exchange-server,exchangewebservices,Web Services,Soap,Exchange Server,Exchangewebservices,交换和时区将是我的死亡 我的Exchange服务器位于东部标准时间(UTC-5)。Exchange的版本是2007 SP1。用户位于法国巴黎(UTC+2)。如果我尝试将约会创建为全天活动,它将始终跨越2天。请求如下: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <ns2:MailboxCulture xmlns:ns2

交换和时区将是我的死亡

我的Exchange服务器位于东部标准时间(UTC-5)。Exchange的版本是2007 SP1。用户位于法国巴黎(UTC+2)。如果我尝试将约会创建为全天活动,它将始终跨越2天。请求如下:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ns2:MailboxCulture xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            >en-US</ns2:MailboxCulture>
        <ns2:RequestServerVersion
            xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            Version="Exchange2007_SP1"/>
        <ns2:TimeZoneContext xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
            <ns2:TimeZoneDefinition Id="Romance Standard Time"/>
        </ns2:TimeZoneContext>
    </soap:Header>
    <soap:Body>
        <CreateItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            SendMeetingInvitations="SendToAllAndSaveCopy">
            <SavedItemFolderId>
                <ns2:DistinguishedFolderId Id="calendar"/>
            </SavedItemFolderId>
            <Items>
                <ns2:CalendarItem>
                    <ns2:Subject>Test TZ</ns2:Subject>
                    <ns2:Body BodyType="Text"/>
                    <ns2:Start>2011-10-28T09:00:00Z</ns2:Start>
                    <ns2:End>2011-10-28T17:00:00Z</ns2:End>
                    <ns2:IsAllDayEvent>true</ns2:IsAllDayEvent>
                    <ns2:Location>Somewhere</ns2:Location>
                </ns2:CalendarItem>
            </Items>
        </CreateItem>
    </soap:Body>
</soap:Envelope>

恩美
测试TZ
2011-10-28 09:00:00Z
2011-10-28 17:00:00Z
真的
某处
注意:我的计算机上的时区设置为“(UTC+01:00)布鲁塞尔、哥本哈根、马德里、巴黎”,尽管计算机实际位于美国东部时间

这是Outlook显示的内容,跨越2天。

如果从Exchange检索新创建的日历项,它将显示以下开始和结束日期/时间:

<t:Start>2011-10-28T00:00:00Z</t:Start>
<t:End>2011-10-29T00:00:00Z</t:End>
<t:IsAllDayEvent>true</t:IsAllDayEvent>
2011-10-28:00:00Z
2011-10-29T00:00:00Z
真的
()


我尝试过开始日期和结束日期的各种组合,但无论我做什么,我总是得到跨越2天的结果。如果我在EST中运行相同的东西(没有tz上下文标题),它将只运行一天。

好的,在这里回答我自己的问题。看起来关键是设置会议时区

<ns2:MeetingTimeZone>
    <ns2:BaseOffset>-P0Y0M0DT2H0M0S</ns2:BaseOffset>
</ns2:MeetingTimeZone>

-P0Y0M0DT2H0M0S
因为这是UTC+2,并且持续时间值必须为正值,所以将“-”放在“p”上。由于TZ为“UTC+2”,因此减去2得到UTC(因此偏移量为负值)。如果这是EST(UTC-5),则基准偏移量将是P0Y0M0DT5H0M0S

希望这对别人有帮助

完整请求如下所示:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ns2:MailboxCulture xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            >en-US</ns2:MailboxCulture>
        <ns2:RequestServerVersion
            xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            Version="Exchange2007_SP1"/>
        <ns2:TimeZoneContext xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
            <ns2:TimeZoneDefinition Id="Romance Standard Time"/>
        </ns2:TimeZoneContext>
    </soap:Header>
    <soap:Body>
        <CreateItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types"
            SendMeetingInvitations="SendToAllAndSaveCopy">
            <SavedItemFolderId>
                <ns2:DistinguishedFolderId Id="calendar"/>
            </SavedItemFolderId>
            <Items>
                <ns2:CalendarItem>
                    <ns2:Subject>Test TZ</ns2:Subject>
                    <ns2:Body BodyType="Text"/>
                    <ns2:Start>2011-10-27T22:00:00Z</ns2:Start>
                    <ns2:End>2011-10-28T22:00:00Z</ns2:End>
                    <ns2:IsAllDayEvent>true</ns2:IsAllDayEvent>
                    <ns2:Location>Somewhere</ns2:Location>
                    <ns2:MeetingTimeZone>
                        <ns2:BaseOffset>-P0Y0M0DT2H0M0S</ns2:BaseOffset>
                    </ns2:MeetingTimeZone>
                </ns2:CalendarItem>
            </Items>
        </CreateItem>
    </soap:Body>
</soap:Envelope>

恩美
测试TZ
2011-10-27T22:00:00Z
2011-10-28 22:00:00Z
真的
某处
-P0Y0M0DT2H0M0S

看到了一个类似的情况,在使用Java EWS客户端时,我不得不更改SendInvitationMode