Javascript PHP中的Date函数总是将日期延迟一天
我的情况是总是把日期推迟一天。 例如,我有一个值Javascript PHP中的Date函数总是将日期延迟一天,javascript,php,date,php-5.6,Javascript,Php,Date,Php 5.6,我的情况是总是把日期推迟一天。 例如,我有一个值-243219600,它与日期1962年4月18日 过了一会儿 date('d/m/Y', -243219600); 输出为: 17/04/1962 -243219600从1970年1月1日00:00:00 UTC开始的秒在javascript中是 你得到了正确的日期 检查PHP的时区,将其设置为与计算机相同(因为您使用javascript)。日期()的输出取决于配置的时区。如果添加时间和时区,您可以看到它。就我而言,是CET: echo da
-243219600
,它与日期1962年4月18日
过了一会儿
date('d/m/Y', -243219600);
输出为:
17/04/1962
-243219600从1970年1月1日00:00:00 UTC开始的秒在javascript中是
你得到了正确的日期 检查PHP的时区,将其设置为与计算机相同(因为您使用javascript)。日期()的输出取决于配置的时区。如果添加时间和时区,您可以看到它。就我而言,是CET:
echo date('d/m/Y H:m:i T', -243219600);
//prints: 18/04/1962 00:04:00 CET
带有date()的解决方案
如果希望date()
使用UTC
,请使用:
输出
(你看,因为UTC是午夜前一小时,所以日期取决于时区)
带有日期时间的解决方案
:
DateTime
类如果由Unix时间戳构造,则始终使用UTC:
从:
注:
当$time
参数是UNIX时间戳(例如@946684800)或指定时区(例如2010-01-28815:00:00+02:00)时,将忽略$timezone
参数和当前时区
因此,您也可以使用以下代码:
echo (new DateTime('@-243219600'))->format('d/m/Y');
当我尝试你的代码时,我得到了正确的18/04/1962
作为输出。我得到了第17个-我使用UTC。特别是$dt=new DateTime()$dt->setTimestamp(-243219600);echo$dt->format('r')代码>我得到了1962年4月17日星期二23:00:00
。所以,非常接近18号,但不太接近。@JitendraPurohit你能告诉我你使用的时区吗?我仍然得到1962年4月17日,应该是1962年4月18日不,不应该。UTC是1962年4月17日23:00:00。new DateTime('@'.strotime('+1天','@-243219600')代码>显示正确的日期
17/04/1962 23:04:00 UTC
echo (new DateTime('@-243219600'))->format('d/m/Y');