Google任务迁移到Exchange帐户
问题描述:
我使用OAuth 2.0 Dot Net Google客户端库(https://developers.google.com/api-client-library/dotnet/apis/tasks/v1)从我的Gmail帐户检索了任务。当我使用Microsoft.Exchange.WebServices Dot Net库将任何这些任务保存到我的交换账户时,虽然Gmail账户和交易账户的时区相同,即中央时间(美国&加拿大),但任务的日期会自动调整。我想在任务日期防止这种自动调整。Google任务迁移到Exchange帐户
任何人都可以帮忙吗?
答
我已经通过使用日历时区解决了该问题。基本上,Google日历有时区信息。我从小学日历检索时区信息,然后保存任务到Exchange帐户之前,我转换的截止日期为UTC与下面的C#代码
if (task.Due.Value.Kind == DateTimeKind.Local)
{
dueDateUTC = task.Due.Value.ToUniversalTime();
unspecifiedKindDate = new DateTime(dueDateUTC.Year, dueDateUTC.Month, dueDateUTC.Day);
dueDateUTC = TimeZoneInfo.ConvertTime(unspecifiedKindDate, Utility.OlsonTimeZoneToTimeZoneInfo(timezone), TimeZoneInfo.Utc);
}
此代码首先找出任务是否预产期是在当地时间或不是。如果它在本地时区,则截止日期转换为UTC。转换为UTC后,通过下面的代码
unspecifiedKindDate = new DateTime(dueDateUTC.Year, dueDateUTC.Month, dueDateUTC.Day);
这不明类型的日期时间,然后再转换为UTC与下面的代码
dueDateUTC = TimeZoneInfo.ConvertTime(unspecifiedKindDate, Utility.OlsonTimeZoneToTimeZoneInfo(timezone), TimeZoneInfo.Utc);
的帮助现在这个“dueDateUTC”创造了一个未指定类型的DateTime对象对象用于将任务信息保存到Exchange帐户中。在保存任务时,Exchange服务器会自动将dueDateUTC转换为邮箱时区,并且这是需要的。 :)
答
请确保您将ExchangeService对象上的时区设置为用户的时区。 https://msdn.microsoft.com/EN-US/library/office/dn789029(v=exchg.150).aspx
杰森,我正在为任何时区的任何交换邮箱写一个通用的应用程序。所以我不知道之前的时区。 – 2015-01-22 10:45:09
这仍然是一个考虑因素。您必须查看Google导出的值。他们是在UTC还是在某个时区?托管API默认为运行时所在计算机的本地时区,并且您设置的所有时间值都会翻译,就好像它们位于该时区中一样。 – 2015-01-22 14:18:36