我从我的php中将unix时间戳扔到我的javascript中,我注意到PHP和Javascript时间戳与纪元不同(秒与毫秒)。
我基本上做的是回应php unixtime然后添加3个零(简单地将它乘以1000)但我注意到当我检查它时,它表明时间已经关闭了大约4- 8个小时。
我使用的是canvas.js,我需要使用unix时间戳
进行转换例如:
1434183780
2015年6月13日上午8:23
我添加了3个零
1434183780000
echo "{ x:".$chartData[$loop]['time']."000 , y:1 }";
发生的事情是时间变成:
2015年6月13日16:23 PM
除了时间变得完全扭曲外,一切都运转正常。
一旦我把它放在javascript上,我怎么能在没有时间改变的情况下使它工作?我更喜欢将它保留在unixtime中,因为当我用它做其他事情时,我仍然使用它。
答案 0 :(得分:3)
这听起来就像是时区问题。
Unix timestamp始终是UTC中的一个时间点。
以" 2015年6月13日上午8:23&#34的格式显示时;您总是使用某个时区来显示它。时间显示为" 16:23 PM"是因为正在使用除您期望之外的时区来显示Unix时间戳。
因此,解决方案只是确保您在显示时间戳时选择正确的时区。
如果您使用的是JavaScript Date
对象并且您的意思是使用UTC,则可以尝试使用toUTCString()
之类的方法:
console.log(new Date(1434183780000).toUTCString());
// Output: Sat, 13 Jun 2015 08:23:00 GMT
Date
仅支持本地时区或UTC。如果您想以UTC格式构建自己的格式化字符串,可以使用Date
中以getUTC*()
开头的方法,例如getUTCHours()
或getUTCDate()
。
在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
中查看有关Date
对象的更多信息