2013-04-02 3 views
1

Google 캘린더를 내 앱 중 하나로 통합하려고합니다.Google 캘린더 API 일광 절약 시간제 (시간대)

나는 유용한 자습서를 따라 왔지만 Google에 정확한 시간을 알려주고 있습니다.

약속을 추가 할 때이 타임 스탬프 형식을 사용합니다. 00 : 2013-04-02T18

날짜 시간 시간대 00.000 + 00 : 00

지금이는 현재 일광 절약 시간을 추가 볼 수 있습니다 I 별도로 작동하는 것 같다. PHP를 사용하여 정확한 날짜 형식을 생성하려면 어떻게해야합니까?

내가 읽을 수있는 도움말이나 링크는 훌륭 할 것입니다. 제가 발견 할 수있는 것은 datetimes를 다시 사용하는 데 문제가있는 사람들에 관한 것입니다. 타임 스탬프의 +00:00 부분은 시간대의 오프셋 GMT이

$date = '2013-04-02'; 
     $starttime = '18:00'; 
     $endtime = '20:00'; 

{ 
     "start": { 
      "dateTime": "{$date}T{$starttime}:00.000+00:00" 
     }, 
     "end": { 
      "dateTime": "{$date}T{$endtime}:00.000+00:00" 
     }, 
     "summary": "$title", 
     "description": "$title" 
     } 
+1

, 자동으로 잘 작동합니다. – CBroe

+0

API에 전화를 걸기 전에 추가 시간이 추가됩니까? 아니면 기록 시간보다 적은 시간 소인으로 전화를 보낸 후에 추가 시간이 표시됩니까? 또한 제공 할 수있는 모든 코드/PHP datetime 설정이 유용 할 것입니다. – jimcavoli

+0

나는 사용하고있는 json 코드를 추가했다. –

답변

0

이 추가 및 약속 내 JSON 코드

, 여기서,이 "플러스 제로"인간 "내에서이 설정되어 시간대는 GMT입니다. " GMT에서 1 시간 벗어난 경우, 앞당겨지는 시간이 GMT 시간보다 늦거나 늦은 지 여부에 따라이 부분을 +01:00 또는 -01:00으로 변경해야합니다. 원할 경우 UTC Offset in PHP을받을 수도 있습니다.

또는 모든 것을 GMT 날짜/시간으로 변환 할 수 있지만 시간대 지원이 내장되어있어 사용하기가 더 쉽습니다.

0

누군가 내 솔루션을 유용하게 사용할 수 있기를 바랍니다. GMT에서/GMT로 전환 할 즈음에 Google 캘린더 API를 사용하여 일정을 삽입 할 때 문제가 발생했습니다.

DateTime과 상수 RFC3339를 사용하고있었습니다. RFC3339 형식에는 시간 오프셋 (예 : +01 : 00)이 포함됩니다. dateTime 속성을 지정하면 Calendar에서 timeZone 속성의 값을 절대적으로 무시하기 때문에 Google 캘린더 API에서 문제가 발생할 수 있습니다.

나를위한 유일한 해결책은 시간 오프셋과 함께 RFC3339 형식 사용을 중단하는 것이 었습니다. 이제 다음과 같은 (RFC3339) DateTime 형식을 사용합니다 : Y-m-d\TH:i:s (끝 부분에 P 속성이 누락되어 있음을 유의하십시오 (RFC3339 : Y-m-d\TH:i:sP).

그런 다음 timeZone 특성을 지정해야합니다. 예 : '유럽/프라하'.

마지막으로 내 코드는 다음과 같습니다

당신이 전달하는 타임 스탬프 값에 _actual_ 시간대를 사용하는 경우
$atts['summary'] = $this->title; 
$atts['location'] = $this->location; 
$atts['description'] = $this->description; 
$atts['start']['dateTime'] = $this->start->format("Y-m-d\TH:i:s"); 
$atts['start']['timeZone'] = $this->timeZone; //"Europe/Prague" 
$atts['end']['dateTime'] = $this->end->format("Y-m-d\TH:i:s"); 
$atts['end']['timeZone'] = $this->timeZone; //"Europe/Prague"