指定された場所に応じてタイムゾーンが動的である PHP で ics ファイルを動的に生成しようとしています。すべて正常に動作しますが、夏時間の問題があります。つまり、時差が 1 時間ほど表示されます。この問題を解決するには、DAYLIGHT
動的に使用する必要があります。しかし、それを動的に使用する方法、または指定されたタイムゾーンに関連するオフセットTZOFFSETFROM
をどこから取得できるかわかりません。TZOFFSETTO
例えば:
$timeZone = "America/Denver" // dynamically fetched from DB
$ical = "BEGIN:VCALENDAR\n";
$ical .= "VERSION:2.0\n";
$ical .= "PRODID:-//LokalMotion//LokalMotion Events v1.0//EN\n";
$ical .= "CALSCALE:GREGORIAN\n";
$ical .= "METHOD:PUBLISH\n";
$ical .= "X-WR-CALNAME:LokalMotion Events\n";
$ical .= "X-MS-OLK-FORCEINSPECTOROPEN:TRUE\n";
$ical .= "BEGIN:VTIMEZONE\n";
$ical .= "TZID:{$timeZone}\n";
$ical .= "TZURL:http://tzurl.org/zoneinfo-outlook/{$timeZone}\n";
$ical .= "X-LIC-LOCATION:{$timeZone}\n";
$ical .= "END:VTIMEZONE\n";
$ical .= "BEGIN:VEVENT\n";
$ical .= "DTSTAMP:".date('Ymd\THis\Z')."\n";
$ical .= "DTSTART;TZID={$timeZone}:{$start_date}\n";
$ical .= "DTEND;TZID={$timeZone}:{$end_date}\n";
$ical .= "STATUS:CONFIRMED\n";
$ical .= "SUMMARY:{$title}\n";
$ical .= "DESCRIPTION:{$description}\n";
$ical .= "ORGANIZER;CN=Reminder:MAILTO:support@mysite.com\n";
$ical .= "CLASS:PUBLIC\n";
$ical .= "CREATED:{$start_date}Z\n";
$ical .= "LOCATION:{$location}\n";
$ical .= "URL:http://www.mysite.com\n";
$ical .= "SEQUENCE:1\n";
$ical .= "LAST-MODIFIED:".date('Ymd\THis\Z')."\n";
$ical .= "UID:{$title}-support@mysite.com\n";
$ical .= "END:VEVENT\n";
$ical .= "END:VCALENDAR";
echo $ical;
場所に応じて昼光を動的に使用する方法、場所が「アメリカ/カラカス」になるように..など
$ical .= "BEGIN:DAYLIGHT";
$ical .= "TZOFFSETFROM:{}"; //I need this dynamic
$ical .= "TZOFFSETTO:{}";//I need this dynamic
$ical .= "TZNAME:EDT";
$ical .= "DTSTART;TZID={$timeZone}:{$start_date}\n";
$ical .= "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU";
$ical .= "END:DAYLIGHT";
前もって感謝します。