数据库中的同一日期使用从后端到前端的不同UTC offeset

问题描述 投票:0回答:1

我对从MySQL数据库获取日期有一些问题

一旦提取日期,我就在服务器上执行console.log:

console.log('Original Date: ', dip.nato_il);
console.log('Formatted Date: ', moment(dip.nato_il).format('YYYY-MM-DD'));
console.log('UTC Offset: ', moment(dip.nato_il).utcOffset());

这是日志结果:

Original Date:  1961-09-07T22:00:00.000Z
Formatted Date:  1961-09-08
UTC Offset:  120

所以utfOffset的值对我来说也是正确的,并且格式化日期也正确。

在此console.log之后,我使用express的res.send()发送到前端数据,并在Chrome控制台上记录了相同的日期,这是记录的结果:

Original Date:  1961-09-07T22:00:00.000Z
Formatted Date:  1961-09-07
UTC Offset:  60

我不明白为什么偏移量会发生变化,仅在这个日期,例如另一个日期在beckend上给我这个结果:

Original Date:  1990-08-18T22:00:00.000Z
Formatted Date:  1990-08-19
UTC Offset:  120

以及前端上的此:

Original Date:  1990-08-18T22:00:00.000Z
Formatted Date:  1990-08-19
UTC Offset:  120

我也尝试在Chrome控制台中登录:

console.log('1961 ---> ', moment('1961-09-07T22:00:00.000Z').utcOffset());  // Log result "1961 --->  60"
console.log('1962 ---> ', moment('1962-09-07T22:00:00.000Z').utcOffset());  // Log result "1962 --->  60"
console.log('1963 ---> ', moment('1963-09-07T22:00:00.000Z').utcOffset());  // Log result "1963 --->  60"
console.log('1964 ---> ', moment('1964-09-07T22:00:00.000Z').utcOffset());  // Log result "1964 --->  60"
console.log('1965 ---> ', moment('1965-09-07T22:00:00.000Z').utcOffset());  // Log result "1965 --->  60"
console.log('1966 ---> ', moment('1966-09-07T22:00:00.000Z').utcOffset());  // Log result "1966 --->  120"
console.log('1967 ---> ', moment('1967-09-07T22:00:00.000Z').utcOffset());  // Log result "1967 --->  120"
console.log('1968 ---> ', moment('1968-09-07T22:00:00.000Z').utcOffset());  // Log result "1968 --->  120"
console.log('1969 ---> ', moment('1969-09-07T22:00:00.000Z').utcOffset());  // Log result "1969 --->  120"
console.log('1970 ---> ', moment('1970-09-07T22:00:00.000Z').utcOffset());  // Log result "1970 --->  120"
console.log('1971 ---> ', moment('1971-09-07T22:00:00.000Z').utcOffset());  // Log result "1971 --->  120"
console.log('1972 ---> ', moment('1972-09-07T22:00:00.000Z').utcOffset());  // Log result "1972 --->  120"
console.log('1973 ---> ', moment('1973-09-07T22:00:00.000Z').utcOffset());  // Log result "1973 --->  120"

为什么有些约会只用1个小时而不是2个小时?

服务器是基于NodeJ的,具有Express之类的路由框架,为了从DB中获取数据,我将ObjectioJ与knexJ一起使用。 Moment是用于管理日期的节点模块。服务器在法兰克福,我在意大利,因此时区相同。

谢谢大家!

node.js date timezone momentjs timezone-offset
1个回答
0
投票

您的所在地,意大利,从1966年开始观察夏令时。因此,当年9月的日期的时区偏移已更改。

https://www.timeanddate.com/time/zone/italy/rome?year=1960

© www.soinside.com 2019 - 2024. All rights reserved.