PHP strotime和JavaScript Date.parse返回不同的时间戳
我在JavaScript中得到了相同的日期-时间-秒值,该值由PHP中的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
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我知道时区也很重要,但我只给出了第二个区别,因为第一个区别是由youComingNaN
在Mozilla浏览器中给出的。