PHP和Javascript中的日期不匹配

时间:2015-10-26 01:27:14

标签: javascript php

作为标题,虽然我只设置了价值。 在Javascript中:

var n = (new Date("2015 Oct 17")).getTime()/1000;
console.log(n);
// result: 1445014800

和PHP:

$unix = date('d-m-Y', 1445014800);
echo $unix;
// result: 16-10-2015

请留下一些解释。 非常感谢!

3 个答案:

答案 0 :(得分:1)

在您的JavaScript中:

var n = (new Date("2015 Oct 17")).getTime()/1000;
console.log(n);
// result: 1445014800

操作/1000正在将您的值强制转换为数字类型,因此答案是正确的!

答案 1 :(得分:0)

在javascript中,解析像“2015 Oct 17”这样的字符串完全取决于实现。如果它完全有效,它很可能被转换为Date对象,表示主机系统时区中当天开始时00:00:00的日期。

对于时区偏移量为UTC + 1000的系统,并将该字符串解析为本地时间,以秒为单位的时间值为1445004000。

但是,这样的系统可能会认为字符串有点像ISO 8601字符串,并且它可能会决定,因为没有时区的这些字符串在ES5中被视为UTC,它会将其视为UTC时间。在这种情况下,以秒为单位的时间值将为1445040000(即相当于2015-10-17T00:00:00Z)。

为了在系统之间可靠地传输日期,自从UNIX(和ECMAScript)纪元1070-01-01T00:00:00Z以来,通常认为最好在几秒或几毫秒内传输时间值。

要为2015年10月17日创建此类时间值,您可以使用:

var timeValue = Date.UTC(2015, 9, 17);

要将UNIX时间值1445014800转换为ECMAScript日期,您可以这样做(注意UNIX时间值以秒为单位,ECMAScript以毫秒为单位):

console.log(new Date(1445014800*1000).toISOString());  // 2015-10-16T17:00:00.000Z

所以我假设P​​HP主机的时区是UTC-05:00,2015-Oct-17被视为UTC。

答案 2 :(得分:-1)

我已经检查了,这个JS函数返回

1445036400

在人类的时间里'是

Fri, 16 Oct 2015 23:00:00 GMT

https://jsbin.com/wuvawupede/edit?js,console,output

http://www.epochconverter.com/