PHP에서 ics 파일을 동적으로 생성하려고합니다. 여기서 시간대는 주어진 위치에 따라 동적입니다. 모든 것이 잘 작동하지만 일광 시간 문제가 있습니다. 즉 1 시간 정도의 시간차가 있습니다. 이제이 문제를 해결하려면 DAYLIGHT
을 동적으로 사용해야합니다. 하지만 동적으로 사용하는 방법을 모르거나 주어진 시간대와 관련된 TZOFFSETFROM
및 TZOFFSETTO
오프셋을 어디서 얻을 수 있습니까? 예를 들어ICS 파일의 동적 시간대 문제
: 위치가 '미국/카라카스'이 될 수있는 것처럼
$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:[email protected]\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}[email protected]\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";
감사합니다. 엔진이 사용하는 영역의 시간 특성을 알 수 있도록
당신은 제대로 값을 채우기 위해 DateTimeZone :: getTransitions' '의 정보를 사용할 수 있습니다. [이 문서들] (http://www.php.net/manual/en/datetimezone.gettransitions.php)을보십시오. –
Matt 씨를 지원해 주셔서 감사합니다. – Bheem
날짜/시간 스탬프의 끝에 "Z"를 사용하지 마십시오. Outlook 및 iCal은이 시간을 UTC로 사용하고 현지 시간대에 따라 다시 계산하기 때문입니다. – Anonymous