将日期转换为毫秒到目前为止

时间:2014-04-28 18:47:06

标签: javascript php jquery

我遇到了一个奇怪的问题。我发送一个日期,我使用Javascript转换为毫秒到我的控制器。在那里,我将毫秒转换为PHP中的时间戳。它似乎得到了正确的日期部分,但时间完全没有了。谁能告诉我我错过了什么?代码如下。

的javascript

var d = new Date("13 October 2014 11:13:00");    
document.write(d.getTime() + " milliseconds since 1970/01/01");

结果

1413191580000

PHP

echo date("Y-m-d H:i:s", 1413191580000/1000);

结果

2014-10-13 02:13:00

2 个答案:

答案 0 :(得分:5)

我猜这种情况正在发生,因为您的客户端返回的日期与服务器不同。 JavaScript Date.prototype.getTime()根据ECMAScript标准(§15.9.1.1)返回UTC时间戳。标准化客户端和服务器之间的时区,然后两者中的日期可以相同。我总是在服务器上处理UTC的日期,然后进行客户端时区本地化。

答案 1 :(得分:0)

UNIX风格的日期/时间(自1970年1月1日起为millis)使用UTC(AKA GMT,Zulu)时区。问题是许多方法"帮助"您可以将该日期/时间转换为当地时区,同时考虑夏令时。因此,如果夏令时生效,冬季创建的日期/时间将在夏季提前一小时显示。

通常,您无法控制客户端或服务器时区设置,因此解决方案是了解转换问题。不幸的是,没有简单的解决方案。