- 问题描述
根据文档:云开发时区是UTC+0 但以下两个Date有区别
- 问题如下
console.log( Date.now( ), new Date( ).toLocaleString( ) ); |
发现前者为 UTC+8,后者为UTC+0
截图如下:
左侧为云开发定时器任务,每次执行时,里面执行上述语句。
左侧为UTC+8的日志记录时间,
右1为时间戳,右2为本地时间,
当时间戳转为本地时间为:
"2019/7/3 下午1:02:00“
跟直接输出
|
的结果对不上,上述表达式输出为:2019-7-3 05:02:00
即一个为
// UTC+8 Date.now( ) // UTC+0 new Date( ).toLocaleString( ) |
何解?
Javasscript 里的 `toLocalString` 返回值和时区有关系, 在不同时区下取得当地时间自然不一样.
了解。那为何 Date.now( ) 是UTC+8,而new Date( ).toLocalString( )却是 UTC+0呢
所有时区的 unix 时间戳(Date.now()) 都是统一的.
云函数的时区是 utc0, 在云函数里执行 toLocaleString 得到的是 utc0 时间, 你的例子就是格林威治时间 上午 5 点.
你本的时区是 utc+8, 你在本地执行 toLocaleString 得到就是北京时间下午 13 点. 但实际上绝对上时间都是同一个.
感谢 恍然大悟。
最后一个问题。
new Date( )也是跟时区走的是吗
`new Date()` 只是实例化一个时间对象, 本身和时区无关.