Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP strotime和JavaScript Date.parse返回不同的时间戳_Php_Javascript_Date_Datetime_Timestamp - Fatal编程技术网

PHP strotime和JavaScript Date.parse返回不同的时间戳

PHP strotime和JavaScript Date.parse返回不同的时间戳,php,javascript,date,datetime,timestamp,Php,Javascript,Date,Datetime,Timestamp,我在JavaScript中得到了相同的日期-时间-秒值,该值由PHP中的strotime()给出。但我需要JavaScript中的相同值 PHP代码 echo strtotime("2011-01-26 13:51:50"); // 1296046310 var d = Date.parse("2011-01-26 13:51:50"); console.log(d); // 1296030110000 <script type="text/javascript" src="js/jq

我在JavaScript中得到了相同的日期-时间-秒值,该值由PHP中的
strotime()
给出。但我需要JavaScript中的相同值

PHP代码

echo strtotime("2011-01-26 13:51:50");
// 1296046310
var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function toTimestamp(year,month,day,hour,minute,second)
    {
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
        return datum.getTime()/1000;
    }

    $(function()
    {
        console.log(toTimestamp(2011,01,26,13,51,50));

    });

</script>

<?php

echo $the_date = strtotime("2011-01-26 13:51:50");
JavaScript代码

echo strtotime("2011-01-26 13:51:50");
// 1296046310
var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function toTimestamp(year,month,day,hour,minute,second)
    {
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
        return datum.getTime()/1000;
    }

    $(function()
    {
        console.log(toTimestamp(2011,01,26,13,51,50));

    });

</script>

<?php

echo $the_date = strtotime("2011-01-26 13:51:50");

您需要使用相同的时区进行理智的比较:

echo strtotime("2011-01-26 13:51:50 GMT");
// 1296049910

var d = Date.parse("2011-01-26 13:51:50 GMT") / 1000;
console.log(d);
// 1296049910
更新

echo strtotime("2011-01-26 13:51:50");
// 1296046310
var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function toTimestamp(year,month,day,hour,minute,second)
    {
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
        return datum.getTime()/1000;
    }

    $(function()
    {
        console.log(toTimestamp(2011,01,26,13,51,50));

    });

</script>

<?php

echo $the_date = strtotime("2011-01-26 13:51:50");
根据该标准,只有RFC 2822格式的日期得到很好的支持:

Date.parse("Wed, 26 Jan 2011 13:51:50 +0000") / 1000
要生成这样的日期,可以在PHP中使用
gmdate('r')

echo gmdate('r', 1296049910);

JavaScript使用毫秒作为时间戳,而PHP使用秒。结果,你得到了非常不同的日期,因为它是1000倍

样本

echo strtotime("2011-01-26 13:51:50");
// 1296046310
var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function toTimestamp(year,month,day,hour,minute,second)
    {
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
        return datum.getTime()/1000;
    }

    $(function()
    {
        console.log(toTimestamp(2011,01,26,13,51,50));

    });

</script>

<?php

echo $the_date = strtotime("2011-01-26 13:51:50");
echo日期('Y-m-d',时间戳/1000)

评论回复

echo strtotime("2011-01-26 13:51:50");
// 1296046310
var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function toTimestamp(year,month,day,hour,minute,second)
    {
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
        return datum.getTime()/1000;
    }

    $(function()
    {
        console.log(toTimestamp(2011,01,26,13,51,50));

    });

</script>

<?php

echo $the_date = strtotime("2011-01-26 13:51:50");

函数到时间戳(年、月、日、小时、分钟、秒)
{
var数据=新日期(日期UTC(年、月、日、小时、分钟、秒));
返回datum.getTime()/1000;
}
$(函数()
{
控制台日志(toTimestamp(2011,01,26,13,51,50));
});
strotime()
Date.parse()
分别以秒和毫秒的分辨率生成UNIX时间戳。但是,如果输入字符串中缺少时区信息,则假定为本地时间。因此,输入字符串
2011-01-26T13:51:50
可能在不同的机器上产生不同的输出,即使使用PHP(或JavaScript)在两台机器上生成时间戳

解决方案是在字符串中显式指定时区。这将在任何机器上产生相同的结果:

Date.parse("Jan 26, 2011 13:51:50 GMT+0500") / 1000; // 1296031910
strtotime("Jan 26, 2011 13:51:50 GMT+0500");         // 1296031910

这不是唯一的区别:)@jack我知道时区也很重要,但我只给出了第二个区别,因为第一个区别是由youComing
NaN
在Mozilla浏览器中给出的。