来自数据库的相同日期从后端到前端使用不同的 UTC 偏移量
Same date from database use a different UTC Offeset from Backend to Frontend
我对从 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
我不明白为什么偏移量会发生这种变化,只有这个日期,例如另一个日期在后端给我这个结果:
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 小时?
服务器基于 NodeJs,具有类似 Express 的路由框架,为了从数据库中获取数据,我将 ObjectioJs 与 knexJs 结合使用。 Moment 是用于管理日期的节点模块。
服务器在法兰克福,我在意大利,所以时区是一样的
谢谢大家!
您所在的意大利从 1966 年开始实行夏令时。因此,9 月份日期的时区偏移量在那一年发生了变化。
https://www.timeanddate.com/time/zone/italy/rome?year=1960
嵌入时刻时区和其他地方的 zoneinfo 数据包含数量惊人的时间政治历史。
我对从 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
我不明白为什么偏移量会发生这种变化,只有这个日期,例如另一个日期在后端给我这个结果:
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 小时?
服务器基于 NodeJs,具有类似 Express 的路由框架,为了从数据库中获取数据,我将 ObjectioJs 与 knexJs 结合使用。 Moment 是用于管理日期的节点模块。 服务器在法兰克福,我在意大利,所以时区是一样的
谢谢大家!
您所在的意大利从 1966 年开始实行夏令时。因此,9 月份日期的时区偏移量在那一年发生了变化。
https://www.timeanddate.com/time/zone/italy/rome?year=1960
嵌入时刻时区和其他地方的 zoneinfo 数据包含数量惊人的时间政治历史。