0

PHP を使用して解析されたグループウェア サーバー (ics ファイル) からカレンダーを取得しようとしています。これまでのところ、ical イベント エントリごとに追加のタイムゾーンを定義できることを除けば、これで問題ありません。

DTSTART;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20110723T193000
DTEND;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20110724T000000

別のイベントはすなわちである

DTSTART;TZID="Greenland (Danmarkshavn)":20120523T193000
DTEND;TZID="Greenland (Danmarkshavn)":20120524T000000

問題は、オンラインで見つかった一般的なパーサー クラスがこれらの TZID パラメーターを削除するだけで、イベントが文字列の末尾のタイムスタンプに移動することです。

その問題を処理するphp用のパーサーはありますか?

4

2 に答える 2

0

更新された回答:

sabre/vobjectには、このようなタイムゾーン マッピングのかなり広範なリストがあり、対応するオルソンにマップされます。完全なリストはこちら

しかし、あなたが見つけた特定の文字列がその中にあるようには見えません.

標準に準拠した iCalendar オブジェクトには、実際にVTIMEZONEは VEVENT オブジェクトの上にオブジェクトも含まれている必要があります。オブジェクト内の情報は、VTIMEZONEvobject などのパーサーが目的のタイムゾーンを特定するのに役立ちます。

VTIMEZONEソースのどこにも表示されない場合は、使用しているグループウェア サーバーが破損した iCalendar ファイルを生成していることを意味します。これを示唆するバグを報告することをお勧めします。を含まない iCalendar を生成する多くのアプリケーションがありますが、これらのアプリケーションは、非常に広くサポートさVTIMEZONEれている Olson 識別子 ( など) を使用する傾向があります。Europe/Amsterdam

于 2014-07-03T20:44:58.473 に答える