NodeJS:为什么新的Date()会有两个小时的差异?

apf*_*pfz 5 javascript date utc node.js loopbackjs

我正在做一个

console.log(process.env.TZ);
console.log(new Date());
Run Code Online (Sandbox Code Playgroud)

它输出

Europe/Amsterdam
2018-09-02T08:07:03.842Z
Run Code Online (Sandbox Code Playgroud)

但目前的时间是10:07而不是08:07.

实际的问题是,当我将模型保存到数据库时,它会以某种方式转换为UTC,这不是我想要的.它就像order.delivery_date = 2018-08-06 10:00:00; order.save().当我查看数据库时,它说08:00:00.我该如何防止这种情况发生?

我正在使用Loopback 3和MySQL.

T.J*_*der 18

它输出

Europe/Amsterdam
2018-09-02T08:07:03.842Z
Run Code Online (Sandbox Code Playgroud)

但目前的时间是10:07而不是08:07.

Z弦上显示的时间是在UTC,而不是本地时间.这只是Node.js控制台输出字符串时输出的字符串(来自toUTCString).JavaScript的Date对象在当地时间的工作,但也有功能来访问UTC时间,而不是(getUTCHours,getUTCMinutes,等); toUTCString是其中之一.

您可以使用的各种当地时间函数Date对象(getHours,getMinutes等等),你会从它那里得到本地时间信息.(例如,toString可能会给你一个本地时间字符串.)

  • @apfz只需存储为UTC并以当地时间显示.这确保了时间的意义对任何看过它的人都有意义. (2认同)