2015-01-21 65 views
0

我使用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帳戶

任何人都可以幫忙嗎?

回答

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」創造了一個未指定類型的DateTime對象對象用於將任務信息保存到Exchange帳戶中。在保存任務時,Exchange服務器會自動將dueDateUTC轉換爲郵箱時區,並且這是需要的。 :)

0

請確保您將ExchangeService對象上的時區設置爲用戶的時區。 https://msdn.microsoft.com/EN-US/library/office/dn789029(v=exchg.150).aspx

+0

傑森,我正在爲任何時區的任何交換郵箱寫一個通用的應用程序。所以我不知道之前的時區。 – 2015-01-22 10:45:09

+0

這仍然是一個考慮因素。您必須查看Google導出的值。他們是在UTC還是在某個時區?託管API默認爲運行時所在計算機的本地時區,並且您設置的所有時間值都會翻譯,就好像它們位於該時區中一樣。 – 2015-01-22 14:18:36

相關問題