Google Tasks Migration to Exchange帐户

时间:2015-01-21 07:14:42

标签: gmail migration task exchange-server

我使用OAuth 2.0 Dot Net Google客户端库(https://developers.google.com/api-client-library/dotnet/apis/tasks/v1)从我的Gmail帐户中检索了任务。当我使用Microsoft.Exchange.WebServices Dot Net库将任何这些任务保存到我的交换帐户时,任务的日期会自动调整,尽管Gmail帐户和交换帐户的时区相同,即中央时间(美国和加拿大) 。我想在任务日期中防止这种自动调整。

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

确保将ExchangeService对象上的时区设置为用户的时区。 https://msdn.microsoft.com/EN-US/library/office/dn789029(v=exchg.150).aspx

答案 1 :(得分:0)

我已使用日历时区解决了该问题。基本上,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”对象用于将任务信息保存到Exchange帐户。在保存任务时,Exchange服务器会自动将dueDateUTC转换为邮箱时区,这是所希望的。 :)

相关问题