0
私はGoogleのicalendarファイルを持っています。これを私のMacにインポートすると、日付は "DTEND" 2017-09-02になります。それも同様です。 私はphpの解析でファイルを使用する場合、私に日付 "DTEND" 2017-09-03を与えるでしょう。 正しい日付を取得するには何が必要ですか?助けのためのgoogle icalendarをMySQLにインポート
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:xxx
X-WR-TIMEZONE:Europe/Berlin
X-WR-CALDESC:xxx
BEGIN:VTIMEZONE
TZID:Etc/UTC
X-LIC-LOCATION:Etc/UTC
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170826
DTEND;VALUE=DATE:20170903
DTSTAMP:20170115T115800Z
UID:7eecd830-1ee2-4c8f-82fb-e4f3283916d6
CLASS:PUBLIC
CREATED:20161204T172327Z
DESCRIPTION:DUMMY
LAST-MODIFIED:20161204T172327Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:DUMMY
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
PHP
$ical = new iCalendar();
$ical->parse($filename);
$ical_data = $ical->get_all_data();
$end_dttimearr = explode('T', $data['DTEND']);
$date_end = date_create($end_dttimearr[0]);
$end = date_format($date_end, 'Y-m-d');
おかげで
iCalendar PHPクラスはどこから来たのですか?標準のPHPビルドの一部ではありません。バグがあります。あなたのスクリプトはどのタイムゾーンで実行されていますか? PHPのタイムゾーンを$ data ['X-WR-TIMEZONE']に設定するだけではどうですか? – symcbean