2012-04-12 33 views
4

当我将约会插入交换时,我得到以下问题“EndDate比StartDate早”,任何人都可以帮助解决此问题吗?EndDate比插入交换约会时得到的StartDate错误早

Appointment appt=new Appointment(); 
appt.Start=DateTime.Now(); 
appt.End=DateTime.Now().Addhours(1); 
appt.Subject="Test"; 
appt.Save(WellKnownFolderName.Calendar); 

在最后一行我得到了问题,但我给了正确的开始和结束日期,有谁能告诉我为什么我有这个问题?

注意:如果我在开始日期和结束日期给出不同的日期,它将接受。开始和结束日期应该是相同的,只有时间差,在这种情况下,只有我得到了这个问题。请帮我解决这个问题

回答

0

也许问题是时区。当您使用现在的时区DateTimeKind.Local这是不建议Working with Time Zones in Exchange 2010 Exchange Web Services。你会尝试一下appt.Start = new DateTime(2010, 2, 12, 10, 0, 0, DateTimeKind.Unspecified);吗?
我使用Exchange2007,您的代码适用于我,但时区处理在2010年发生更改。

1

今天我遇到了一个非常类似的问题,但是在更新事件时。我相信我的解决方案与这个问题有关。

我正在更新在中欧时区创建的事件。 我的代码是按以下顺序设置属性:

appt.Start = DateTime.UtcNow; 
appt.End = DateTime.UtcNow.AddMinutes(30); 
appt.StartTimeZone = TimeZoneInfo.FindSystemTimeZoneById("UTC"); 
appt.EndTimeZone = TimeZoneInfo.FindSystemTimeZoneById("UTC"); 

与托管API的工作,我的印象是财产分配的顺序对实际操作没有影响下,但是在这种情况下,我发现它不是真的。

托管API生成以下XML:

<soap:Body> 
     <m:UpdateItem ConflictResolution="AlwaysOverwrite" SendMeetingInvitationsOrCancellations="SendToNone"> 
      <m:SavedItemFolderId> 
       <t:FolderId Id="AQMkADJkAAA==" /> 
      </m:SavedItemFolderId> 
      <m:ItemChanges> 
       <t:ItemChange> 
        <t:ItemId Id="AAMkADJkZWZiODMxLWNRE" /> 
        <t:Updates> 
         <t:SetItemField> 
          <t:FieldURI FieldURI="calendar:EndTimeZone" /> 
          <t:CalendarItem> 
           <t:EndTimeZone Name="UTC" Id="UTC"> 
            ... 
           </t:EndTimeZone> 
          </t:CalendarItem> 
         </t:SetItemField> 
         <t:SetItemField> 
          <t:FieldURI FieldURI="calendar:Start" /> 
          <t:CalendarItem> 
           <t:Start>2015-10-19T15:30:00.000Z</t:Start> 
          </t:CalendarItem> 
         </t:SetItemField> 
         <t:SetItemField> 
          <t:FieldURI FieldURI="calendar:End" /> 
          <t:CalendarItem> 
           <t:End>2015-10-19T16:00:00.000Z</t:End> 
          </t:CalendarItem> 
         </t:SetItemField> 
         ... 
         <t:SetItemField> 
          <t:FieldURI FieldURI="calendar:StartTimeZone" /> 
          <t:CalendarItem> 
           <t:StartTimeZone Name="UTC" Id="UTC"> 
            ... 
           </t:StartTimeZone> 
          </t:CalendarItem> 
         </t:SetItemField> 
        </t:Updates> 
       </t:ItemChange> 
      </m:ItemChanges> 
     </m:UpdateItem> 
    </soap:Body> 

交换财产分配的顺序首先设置时区解决了这一问题对我来说。

当事件的原始时区等于设置的时区时,也不会发生问题。只是在切换时区时。

请注意,这不是真正的解决方案。更好的方法是克隆托管API并修复库中的问题。

相关问题