1

Google カレンダーをアプリの 1 つに統合しようとしています。

私は便利なチュートリアルに従っていますが、Google に正確な時刻を伝えるのに行き詰まっています。

予定を追加するときは、このタイム スタンプ形式を使用します。

日付 時間 タイムゾーン 2013-04-02T18:00:00.000+00:00

現在、これは別として機能しているように見えますが、現在の夏時間のために 1 時間を追加していることがわかります。これを克服するにはどうすればよいですか、または PHP を使用して正しい日付形式を生成するにはどうすればよいですか。

私が読むことができるガイドのヘルプやリンクは素晴らしいでしょう.

これは、追加と予定のための私のjsonコードです。

$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"
        }
4

2 に答える 2

1

誰かが私のソリューションが役立つことを願っています。Google カレンダー API を使用して、GMT との切り替え時にイベントを挿入する際に問題が発生しました。

私は DateTime とその定数 RFC3339 を使用していました。RFC3339 形式には、時間オフセット (+01:00 など) が含まれます。dateTime 属性を指定すると、Calendar は timeZone 属性の値を完全に無視するため、これが Google Calendar API で問題を引き起こしている可能性があります。

私にとって唯一の解決策は、時間オフセットのある RFC3339 形式の使用をやめることでした。今、私は次の (RFC3339 のような) DateTime 形式を使用します: Y-m-d\TH:i:s(最後の P 属性が欠落していることに注意してください、RFC3339: Y-m-d\TH:i:sP)。

次に、timeZone 属性を指定する必要があります。たとえば、「ヨーロッパ/プラハ」です。

最後に、私のコードは次のようになります。

$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"
于 2017-03-24T12:22:08.650 に答える