macos — iCaldendar — Как PHP будет правильно применять часовой пояс, время начала и окончания для файла ics?

Почему следующее startTime а также endTime в Outlook и 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 и время начала / даты точно так же, как указано выше?

0

Решение

Я твердо верю 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]