如何在Javascript中使用来自perl的时间戳?
在我的后端(用Perl编写),我生成一个结束日期。在前端,我想计算这个结束日期之前的剩余时间。为了避免时区问题,我想使用UTC 在perl中,结束日期封装在如何在Javascript中使用来自perl的时间戳?,javascript,perl,timestamp,utc,epoch,Javascript,Perl,Timestamp,Utc,Epoch,在我的后端(用Perl编写),我生成一个结束日期。在前端,我想计算这个结束日期之前的剩余时间。为了避免时区问题,我想使用UTC 在perl中,结束日期封装在数据对象中: data => {endTime => $date->epoch()} 这是我编写的Java脚本函数: updateCounter: function (element){ var now = new Date().getTime(); var endTime = $(
数据对象中:
data => {endTime => $date->epoch()}
这是我编写的Java脚本函数:
updateCounter: function (element){
var now = new Date().getTime();
var endTime = $(element).data("endtime");
var diff = epochEndDealTime - milliseconds;
console (diff, now, endTime);
...
}
我知道,endTime
是将来的事,所以diff
应该是正值,但当我测试时,它会变小,例如:
-1530397503497 1531929432906 1531929409
我做错了什么?如果我们以不同的方式组织数字
now: 1531929432906
endTime: 1531929409
您可能会注意到现在
大约比结束时间
大1000倍。这是因为JS的newdate().getTime()
返回自1970-01-01T00:00:00Z
以来的毫秒数,而Perl的time
返回自1970-01-01T00:00:00Z
以来的秒数
因此,只需将endTime
乘以1000,或将now
除以1000即可
(您也可以使用不同的方式获取Perl中的时间,以获得更高的精度,但这似乎不是必需的。)如果我们以不同的方式组织数字
now: 1531929432906
endTime: 1531929409
您可能会注意到现在
大约比结束时间
大1000倍。这是因为JS的newdate().getTime()
返回自1970-01-01T00:00:00Z
以来的毫秒数,而Perl的time
返回自1970-01-01T00:00:00Z
以来的秒数
因此,只需将endTime
乘以1000,或将now
除以1000即可
(您也可以使用不同的方式获取Perl中的时间,以获得更高的精度,但这似乎不是必需的。)您的历元似乎以秒为单位,而不是以秒为单位milliseconds@charlietfl这可能是一个原因,但如果日期接近(在小时内),分割后仍然会出现时区偏移问题@charlietfl你能再解释一下吗?我认为UTC是一个通用的解决方案,通过使用我看到在GMT中,较大的一个是下午3:57:12.906,而另一个是下午4:17:14,所以对我来说,这不是小时的问题,但你的纪元似乎以秒为单位,而不是以秒为单位milliseconds@charlietfl这可能是一个原因,但是仍然now/1000>endTime
在分割之后,如果日期接近(在小时内),现在可能会出现时区偏移问题@charlietfl您能再解释一下吗?我认为UTC是一个通用的解决方案,通过使用我看到在GMT中,较大的一个是下午3:57:12.906,而另一个是下午4:17:14,所以对我来说,这不是小时的问题,而是分钟的问题