Laravel / PHP: Как устранить расхождение в 1 час в файле ICS

#php #laravel #icalendar

#php #laravel #icalendar

Вопрос:

Я просмотрел многие, если не все, вопросы, связанные с несоответствиями часовых поясов в Laravel, но не думаю, что видел ответ на эту проблему.

Мое приложение позволяет людям создавать события, устанавливая время начала и окончания для события с указанным часовым поясом, который применяется к каждому.

Я могу подтвердить, что config/app.php имеет линию:

 'timezone' => 'America/New_York'
  

У меня есть следующий (сокращенный) файл ics, который генерирует Laravel:

 BEGIN:VCALENDAR
PRODID:-//Event Name
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
SUBJECT:Meeting Name
CLASS:PUBLIC
CREATED:20190311T022400
DTSTART;TZID=America/New_York:20190409T183000
DTEND;TZID=America/New_York:20190409T193000
LOCATION:2833@orgname.org:Place
SUMMARY:Sample Title
DESCRIPTION:We look forward to seeing you. Thank you!
URL;VALUE=URI:http://localhost/events/PMORT2019_04
UID:20190409T183000438@blah.org
SEQUENCE:0
TRANSP:OPAQUE
DTSTAMP:20190409T130438
LAST-MODIFIED:20190409T130437
ORGANIZER;CN=OrgName:MAILTO:events@orgname.org
X-MICROSOFT-CDO-BUSYSTATUS:Confirmed
X-MICROSOFT-CDO-INTENDEDSTATUS:Confirmed
END:VEVENT
END:VCALENDAR
  

Файл ICS показывает, что 1830 (6:30 вечера) является началом с 1930 (7:30 вечера) в качестве времени окончания. Это то, что было введено в качестве входных данных, и это то, что я ожидал увидеть при открытии файла ICS.

Однако, когда я открываю результирующий файл ICS на компьютере с Windows (в том же часовом поясе) Outlook показывает неверные временные рамки с 7:30 до 8:30 вечера.

Комментарии:

1. Есть ли в этом часовом поясе летнее время?

2. В America / New_York есть летнее время, и если время в 6:30 вечера, то это не проблема с кодированием. Похоже, что ваш компьютер не соблюдает летнее время, если он отображается в 7:30.

3. Да, в нем есть летнее время. Причиной этого является компьютер, который я использую для тестирования, и по крайней мере 1 другой компьютер — первоначальный пользователь, сообщивший об этой проблеме. На моем компьютере я знаю, что часовой пояс настроен на летнее время и находится в восточном часовом поясе, который по-прежнему имеет смещение -05h. Я не знаю, имеет ли Windows / Outlook другую настройку или что-то еще для представления часового пояса, но мне нужно учитывать это и убедиться, что это правильно, потому что у многих пользователей, вероятно, будет Outlook.

4. @Phil EDT — это смещение на 04 часа от UTC, а не на -05.

5. Это справедливо. Я упоминал смещение -05, указанное для часового пояса «По восточному времени (США и Канада)» (для Windows), в котором также установлен флажок «Автоматически настраивать часы для перехода на летнее время». Я упоминаю об этом, потому что, в отличие от систем Linux / Unix, он не соответствует точно выбранному часовому поясу «America / New_York». Я не знаю, является ли это причиной или нет.