У меня есть две даты (из выбора времени данных), которые я отправляю с помощью поста в PHP на эту же страницу (я использую скрытый <input>
в форме).
$(function(){
flatpickr('#calendar',{
mode: "range",
onChange: function(dates) {
if(dates.length>1){
$("#formdate .from").val(+dates[0]/1000);
$("#formdate .to").val((+dates[1])/1000);
$("#formdate").submit();
}
}
});
});
Эти даты являются датой POSIX, например 1490569200
является 2017-03-27 00:00:00
,
Вы можете видеть, что я делю их на 1000; это потому, что я использую их в MySQL, поэтому он должен быть в second
и не в millisecond
,
Вот мой сборщик даты и времени:
Когда я проверяю эту вторую дату (здесь 26-е), она вызывает вышеуказанную функцию и обновляет страницу. Если я повторяю свидание с POSIX, я получаю следующее:
1488326400, 1490486400
это соответственно 1 и 26 марта (нормальное поведение). Теперь я использую следующую функцию в PHP для преобразования их в читаемый формат:
echo date('l jS \of F Y',$from);
echo date('l jS \of F Y',$to);
Это показывает мне следующее:
Wednesday 1st of March 2017
Sunday 26th of March 2017
Так что пока здесь все отлично работает!
Но теперь, если я выберу дату, равную или выше 27 марта, вот что случилось:
Я повторяю мои даты в POSIX:
1490313600, 1490655600
это соответственно 24-е и 28-е (так что никаких проблем).
Но когда я использую дату PHP для читаемого формата:
echo date('l jS \of F Y',$from);
echo date('l jS \of F Y',$to);
Friday 24th of March 2017
Monday 27th of March 2017
Действительно, все даты, которые я выберу равными или выше 27-го числа, будут отображаться как день раньше.
Если я использую echo date('l jS \of F Y',1490655600)
, тот же вопрос, он даст мне 27-го и не 28-го.
В чем дело ?
Как сказано в комментарии, это было связано с зимним / летним временем.
Других решений пока нет …