PHP 日期和 POSIX 日期
PHP Date and POSIX date
我有两个日期(来自数据时间选择器),我使用 PHP 中的 post 发送到同一页面(我在表单中使用隐藏的 <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
分别是 3 月 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
所以到这里为止,一切正常!
但是现在,如果我选择一个等于或大于 3 月 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 号。
怎么了?
正如评论中所说,那是由于 winter/summer 时间。
我有两个日期(来自数据时间选择器),我使用 PHP 中的 post 发送到同一页面(我在表单中使用隐藏的 <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
分别是 3 月 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
所以到这里为止,一切正常!
但是现在,如果我选择一个等于或大于 3 月 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 号。
怎么了?
正如评论中所说,那是由于 winter/summer 时间。