iCaldendar - PHP 如何在 ics 文件上正确应用时区、开始、结束时间?
iCaldendar - How will PHP apply the timezone, start, end time correctly on ics file?
为什么 Outlook 中的以下 startTime
和 endTime
以及 Mac 日历没有插入如下所示的准确时间?
输入:
$timezone = 'Europe/Luxembourg';
$startTime = "2016-11-03 18:00:00";
$endTime = "2016-11-03 19:00:00";
iCalender.ics:
$icalender_for_outlook_n_osx =
'BEGIN:VCALENDAR' . "\r\n" .
'VERSION:2.0'. "\r\n" .
'PRODID:-//hacksw/handcal//NONSGML v1.0//EN'.
'BEGIN:VEVENT'. "\r\n" .
'DTEND:' . date("Ymd\THis", strtotime($endTime)) . "\r\n" .
'UID:'. uniqid() . "@".$domain . "\r\n".
'DTSTAMP:'. time() . "\r\n".
'LOCATION:' . $location . "\r\n".
'DESCRIPTION:'. $uri . "\r\n" .
'URL;VALUE=URI:' . $uri . "\r\n" .
'SUMMARY:'. $subject . "\r\n" .
'DTSTART:'. date("Ymd\THis", strtotime($startTime)) . "\r\n" .
'PRIORITY:5'. "\r\n" .
'END:VEVENT'. "\r\n" .
'END:VCALENDAR'. "\r\n";
Outlook 或 Mac 日历中的开始和结束时间要么向后或向前显示几个小时,但从未获得我嵌入的值。您如何准确地将 PHP 时区和 start/date 时间与上面的输入提交完全一致?
我坚信 strtotime()
应该避免并根据格式创建日期时间。
$format = 'Y-m-d H:i:s';
$icalformat = 'Ymd\THis';
$startTime = '2016-11-03 18:00:00';
$endTime = '2016-11-03 19:00:00';
echo DateTime::createFromFormat($format, $startTime)->format($icalformat); // 20161103T180000
echo DateTime::createFromFormat($format, $endTime)->format($icalformat); // 20161103T190000
为什么 Outlook 中的以下 startTime
和 endTime
以及 Mac 日历没有插入如下所示的准确时间?
输入:
$timezone = 'Europe/Luxembourg';
$startTime = "2016-11-03 18:00:00";
$endTime = "2016-11-03 19:00:00";
iCalender.ics:
$icalender_for_outlook_n_osx =
'BEGIN:VCALENDAR' . "\r\n" .
'VERSION:2.0'. "\r\n" .
'PRODID:-//hacksw/handcal//NONSGML v1.0//EN'.
'BEGIN:VEVENT'. "\r\n" .
'DTEND:' . date("Ymd\THis", strtotime($endTime)) . "\r\n" .
'UID:'. uniqid() . "@".$domain . "\r\n".
'DTSTAMP:'. time() . "\r\n".
'LOCATION:' . $location . "\r\n".
'DESCRIPTION:'. $uri . "\r\n" .
'URL;VALUE=URI:' . $uri . "\r\n" .
'SUMMARY:'. $subject . "\r\n" .
'DTSTART:'. date("Ymd\THis", strtotime($startTime)) . "\r\n" .
'PRIORITY:5'. "\r\n" .
'END:VEVENT'. "\r\n" .
'END:VCALENDAR'. "\r\n";
Outlook 或 Mac 日历中的开始和结束时间要么向后或向前显示几个小时,但从未获得我嵌入的值。您如何准确地将 PHP 时区和 start/date 时间与上面的输入提交完全一致?
我坚信 strtotime()
应该避免并根据格式创建日期时间。
$format = 'Y-m-d H:i:s';
$icalformat = 'Ymd\THis';
$startTime = '2016-11-03 18:00:00';
$endTime = '2016-11-03 19:00:00';
echo DateTime::createFromFormat($format, $startTime)->format($icalformat); // 20161103T180000
echo DateTime::createFromFormat($format, $endTime)->format($icalformat); // 20161103T190000