Gmail Google任务迁移到Exchange帐户

Gmail Google任务迁移到Exchange帐户,gmail,migration,task,exchange-server,Gmail,Migration,Task,Exchange Server,我使用OAuth 2.0 Dot-Net谷歌客户端库()从我的Gmail帐户中检索了任务。当我使用Microsoft.exchange.WebServices.Net库将这些任务中的任何一项保存到我的exchange帐户时,任务日期会自动调整,尽管Gmail帐户和exchange帐户的时区相同,即中央时间(美国和加拿大)。我想防止在任务日期中自动调整 有人能帮忙吗?请确保将ExchangeService对象上的时区设置为用户的时区 我使用日历时区解决了这个问题。基本上,谷歌日历有时区信息。我从主

我使用OAuth 2.0 Dot-Net谷歌客户端库()从我的Gmail帐户中检索了任务。当我使用Microsoft.exchange.WebServices.Net库将这些任务中的任何一项保存到我的exchange帐户时,任务日期会自动调整,尽管Gmail帐户和exchange帐户的时区相同,即中央时间(美国和加拿大)。我想防止在任务日期中自动调整


有人能帮忙吗?

请确保将ExchangeService对象上的时区设置为用户的时区

我使用日历时区解决了这个问题。基本上,谷歌日历有时区信息。我从主日历中检索时区信息,然后在将任务保存到Exchange帐户之前,我使用以下C代码将到期日期转换为UTC

这段代码首先找出任务到期日是否在本地时区。如果在本地时区,则到期日将转换为UTC。转换为UTC后,通过以下代码创建未指定种类的datetime对象

unspecifiedKindDate = new DateTime(dueDateUTC.Year, dueDateUTC.Month, dueDateUTC.Day);
dueDateUTC = TimeZoneInfo.ConvertTime(unspecifiedKindDate, Utility.OlsonTimeZoneToTimeZoneInfo(timezone), TimeZoneInfo.Utc);
然后,在以下代码的帮助下,此未指定类型的日期时间再次转换为UTC

unspecifiedKindDate = new DateTime(dueDateUTC.Year, dueDateUTC.Month, dueDateUTC.Day);
dueDateUTC = TimeZoneInfo.ConvertTime(unspecifiedKindDate, Utility.OlsonTimeZoneToTimeZoneInfo(timezone), TimeZoneInfo.Utc);

现在,此“dueDateUTC”对象用于将任务信息保存到Exchange帐户中。保存任务时,Exchange server会自动将dueDateUTC转换为邮箱时区,这是所需的:

Jason,我正在为任何时区的任何exchange邮箱编写通用应用程序。所以我不知道prior中的时区。这仍然是一个考虑因素。您必须查看Google导出的值。他们是在UTC还是在某个时区?托管API默认为运行它的计算机的本地时区,您设置的所有时间值都会被转换,就好像它们在该时区一样。