2015-01-21 1 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 라이브러리를 사용하여 이러한 작업 중 하나를 내 Exchange 계정에 저장하면 Gmail 계정 및 Exchange 계정의 표준 시간대 (즉, 중앙 시간 (US & 캐나다) 임에도 불구하고 작업 날짜가 자동으로 조정됩니다. 작업 날짜에이 자동 조정을 방지하고 싶습니다.Google 작업 Exchange 계정으로 이전

아무도 도와 줄 수 있습니까?

답변

0

캘린더 시간대를 사용하여 문제를 해결했습니다. 기본적으로 Google 캘린더에는 시간대 정보가 있습니다. 나는 차 달력에서 시간대 정보를 검색 한 후 Exchange 계정에 작업을 저장하기 전에, 나는 우선이 코드는 여부를 작업으로 인해 날짜가 현지 시간에 있음을 알 수

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); 
         } 

C# 코드 다음과 같이 UTC로 인해 날짜를 변환 영역 또는 아닙니다. 현지 시간대 일 경우 기한이 UTC로 변환됩니다. UTC로 변환 후, 지정되지 않은 종류의 날짜 개체가이 지정되지 않은 종류의 날짜가 다시이 "dueDateUTC"이제 코드

dueDateUTC = TimeZoneInfo.ConvertTime(unspecifiedKindDate, Utility.OlsonTimeZoneToTimeZoneInfo(timezone), TimeZoneInfo.Utc); 

에게 다음의 도움으로 UTC로 변환됩니다

unspecifiedKindDate = new DateTime(dueDateUTC.Year, dueDateUTC.Month, dueDateUTC.Day); 

다음 코드를 통해 생성된다 개체는 작업 정보를 Exchange 계정에 저장하는 데 사용됩니다. 작업 저장시 Exchange 서버는 dueDateUTC를 사서함 시간대로 자동 변환합니다. :)

0

ExchangeService 개체의 표준 시간대를 사용자의 표준 시간대로 설정했는지 확인하십시오. https://msdn.microsoft.com/EN-US/library/office/dn789029(v=exchg.150).aspx

+0

제이슨, 저는 모든 시간대의 모든 교환 사서함에 대한 일반 응용 프로그램을 작성하고 있습니다. 그래서 나는 이전의 시간대를 모른다. –

+0

여전히 고려 사항입니다. Google 내보내기에서 값을 확인해야합니다. UTC 또는 일부 시간대입니까? 관리 API는 실행중인 컴퓨터의 현지 표준 시간대를 기본으로하며 설정 한 모든 시간 값은 마치 해당 시간대 인 것처럼 번역됩니다. –