Календарь (fullcalendar v4) показывает событие с надлежащим временем, считанным из базы данных и настроенным на требуемый часовой пояс.
У меня есть событие, отображаемое между 12.00 и 14.00.
Часть инициализации календаря:
calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid', 'timeGrid', 'interaction' ],
allDaySlot: false,
selectable: true,
timeZone: '<?php echo $calendar_timezone ?>',
header: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
defaultView: 'timeGridWeek',
nowIndicator: true,
slotDuration: '<?php echo $calendar_full_hours_only ?>',
businessHours: {
startTime: '08:00',
endTime: '19:00',
daysOfWek:[1,2,3,4,5]
},
}
Фид JSON хорош. Событие правильно отображается в календарной сетке:
[
{
"id": 53,
"title": "Test Event 12.00 - 14.00",
"start": "2019-11-19 12:00",
"end": "2019-11-19 14:00",
"allDay": 0,
"editable": 1
}
]
При нажатии на него отображается другое время.
eventClick: function(info) {
console.log('Id: ' + info.event.id);
console.log('Start: ' + info.event.start);
console.log('End: ' + info.event.end);
console.log('Calendar timezone: ' + '<?php echo $calendar_timezone ?>');
console.log('Browser timezone: ' + Intl.DateTimeFormat().resolvedOptions().timeZone);
}
Вывод в консоли:
Id: 53
Start: Fri Nov 19 2019 13:00:00 GMT+0100 (czas środkowoeuropejski standardowy)
End: Fri Nov 19 2019 15:00:00 GMT+0100 (czas środkowoeuropejski standardowy)
Calendar timezone: Europe/Warsaw
Browser timezone: Europe/Warsaw
Какойна один час позже, чем показано в календаре.
Более того, если я изменяю часовой пояс календаря на другой часовой пояс, он корректирует время события, показанного в календаре, но снова, если я нажимаю на них, он показывает времячас спустя. Не могу понять, что происходит.
Я только что обнаружил, что проблема не возникает, если я нажимаю пустой слот. Тогда время верное. Это происходит только тогда, когда я нажимаю на существующее событие.