2013-06-17 2 views
-1

ASP.net 애플리케이션을 만들었으며 Google 캘린더에서 Google 캘린더 API (Google.GData.Calendar)를 사용하여 일정을 예약/추가하고 있습니다.이벤트가 Google 캘린더에서 정확한 시간에 추가되지 않습니다.

FYI, 내 고객은 사우스 오스트레일리아 출신이며 내 사이트는 Godaddy India 서버에서 호스팅됩니다.

호주의 10 월에서 4 월까지는 일광 절약 시간제입니다.

: (사우스 오스트레일리아 (SA) :.. 1971 정기적으로 사용하기 때문에 4월 년 10 월 첫 번째 일요일 첫 번째 일요일은 1917 년 1천9백42-1천9백44년에 DST를 관찰 이전) 여기

내가 직면하고있어 문제는 인도의 이벤트를 사이트에서 추가하면 일광 절약 시간제에서도 같은 시간에 이벤트가 추가됩니다. 그러나 내 고객이 남호주에서 이벤트를 추가하면 이벤트가 일찍 추가됩니다. 예 : 행사 시간이 오전 11 시부 터 오전 11 시까 지되면 오전 9 시부 터 10 시까 지됩니다.

때때로 iPad/Tab/다른 PC를 사용하여 남호주에서 적절한시기에 이벤트를 추가하십시오.

var startHour = new DateTime(dtstartdatetime.Year, dtstartdatetime.Month, dtstartdatetime.Day, startTime.Hours, startTime.Minutes, 00).ToUniversalTime().AddHours(-7); 
var startHour1 = new DateTime(dtstartdatetime.Year, dtstartdatetime.Month, dtstartdatetime.Day, endTime.Hours, endTime.Minutes, 00).ToUniversalTime().AddHours(-7); 

호주는 6 개 시간대를 가지고 있으며, 우리는 이벤트가 시작 조정하고, 종료 시간이에 따라 :

다음은 이벤트에 대한 내 코드입니다. 내가 할했습니다 위치를 알려 주시기 바랍니다

답변

0

몇 가지 변경 :

  • 당신은 Google 캘린더를 묘사하는,하지만 당신이 보여 코드는 DateTime 조작 순수한입니다. Google 캘린더의 기능을 보여주는 코드로 업데이트하거나 표시되는 코드와 일치하도록 질문을 줄이십시오.

  • GData는 더 이상 사용되지 않는 Google 캘린더 API v2를 사용합니다. 현재 v3을 사용해야합니다. 자세한 내용은 this answer을 참조하십시오.

  • DateTime.KindUnspecified입니다. 시작 시간을 로컬 인 것처럼 취급 할 ToUniversalTime으로 전화하면 따라서 서버의 시간대가 계산에 들어갑니다.

  • 6 개의 표준 시간대 및 일광 절약 시간 규칙을 알고있는 것처럼 보였지만 그 다음 하드 코딩 된 -7 시간을 추가하면됩니다. 이는 시간대를 결정하거나 조정할 수있는 올바른 방법이 아닙니다. TimeZoneInfoDateTimeOffset에 대해 읽으십시오.

  • 을 사용하는 것이 좋습니다. Google 캘린더가 IANA time zone 식별자를 사용하므로 도움이 될 수 있습니다.

관련 문제