收藏
回答

【BUG】云开发 Date 不一致

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wx60bf7f745ce31ef0 2.7.1

- 问题描述


根据文档:云开发时区是UTC+0 但以下两个Date有区别


- 问题如下


console.log(
            Date.now( ),
            new Date( ).toLocaleString( )
);


发现前者为 UTC+8,后者为UTC+0

截图如下:


左侧为云开发定时器任务,每次执行时,里面执行上述语句。

左侧为UTC+8的日志记录时间,

右1为时间戳,右2为本地时间,




当时间戳转为本地时间为:

"2019/7/3 下午1:02:00“

跟直接输出

new Date( ).toLocaleString( )

的结果对不上,上述表达式输出为:2019-7-3 05:02:00


即一个为

// UTC+8
Date.now( )
 
// UTC+0
new Date( ).toLocaleString( )



何解?

回答关注问题邀请回答
收藏

1 个回答

  • Justan
    Justan
    2019-07-03

    Javasscript 里的 `toLocalString` 返回值和时区有关系, 在不同时区下取得当地时间自然不一样.

    2019-07-03
    有用 1
    回复 4
    • Pt
      Pt
      2019-07-03

      了解。那为何 Date.now( ) 是UTC+8,而new Date( ).toLocalString( )却是 UTC+0呢

      2019-07-03
      回复
    • Justan
      Justan
      2019-07-03回复Pt

      所有时区的 unix 时间戳(Date.now()) 都是统一的.

      云函数的时区是 utc0, 在云函数里执行 toLocaleString 得到的是 utc0 时间, 你的例子就是格林威治时间 上午 5 点.

      你本的时区是 utc+8, 你在本地执行 toLocaleString 得到就是北京时间下午 13 点. 但实际上绝对上时间都是同一个.

      2019-07-03
      1
      回复
    • Pt
      Pt
      2019-07-03回复Justan

      感谢 恍然大悟。

      最后一个问题。


      new Date( )也是跟时区走的是吗

      2019-07-03
      回复
    • Justan
      Justan
      2019-07-03回复Pt

      `new Date()` 只是实例化一个时间对象, 本身和时区无关.

      2019-07-03
      2
      回复
登录 后发表内容