2017-07-17 8 views
0
私はUTCに時間を割いて、その後、招待カレンダーとしてそれを送信するために、特定のタイムゾーンの時刻に時間をconvetingてる

I-Calはどのように時間を計算しますか? <p></p>のような日付関数を考えてみましょう

$date = new DateTime('2012-07-17 09:00:00 +00'); //UTC 
$date->setTimezone(new DateTimeZone('America/Chicago')); 

echo $start_time=$date->format('H:i:s'); // echoes 04:00:00; // 

しかし渡しますこのよう

$ical .= "DTSTART:".$start."T".$start_time."\r\n"; 

、など見通しの同じ時間ではなく、カレンダーの時間は他のいくつかの時間(午前9時30分)に設定され、アメリカでは9:00である時間を与えるものではありません。 この問題を解決するにはどうすればよいですか?

ご迷惑をおかけして申し訳ありません。それはZフォーマットYmdTHisを使用するようないくつかの例hereをみる

+0

をこれまでのところそれで20170922T200000'問題なし。ここでは、ドキュメントhttp://www.kanzaki.com/docs/ical/dateTime.html –

答えて

0

、それはTZリテラルであると、見えます。

だからあなたのような何か渡したい: `DTSTART; TZID =ヨーロッパ/ベルリン:私はこのようなDTSTARTをフォーマットし、私のiCalファイルに

$ical .= "DTSTART:".$date->format('Ymd\THis\Z')."\r\n"; 
+0

が見つかりません。これは同じ方法をトリガーしません。もしあなたがアジア/コルカタを見るならば、 9:00:00のUTCは090000です。このためのISTは143000として返されますが、1430000をicalに渡すと、招待は9AMではなく8PMとして表示されます。私がここで紛失しているものがわからない – apoo

+0

イベントのUTC時間を渡す必要があります。 UTCのようにISTを渡しているので、エラーが2倍になります(5.5時間のオフセットの2倍の11時間前に終了しました)。 –

+0

ありがとうございます。あなたが正しいです。また、ウィンドウ内のどこかで、計算が既に行われているので、オフセットは減算する必要があります。 – apoo

関連する問題