javascript - momentjs 没有以不同的输入格式返回相同时区的相同输出
问题描述
我在使用 moment js 库时遇到问题。
let moment = require("moment-timezone")
date = '02/15/2018 5:00 PM'
fmt = 'MM/DD/YYYY hh:mm A'
timezone = 'America/New_York'
moment.tz(date, fmt, timezone) //Statement 1
输出> moment.parseZone("2018-02-15T17:00:00.000-05:00")
moment().tz(timezone) //Statement 2
输出> moment.parseZone("2018-06-26T04:33:51.173-04:00")
两个语句都使用相同的时区,但时差与 UTC 不同。第一个显示 5 小时时差,第二个显示 4 小时时差。
如果我使用以下格式,那么它会显示正确的日期时间。
moment.tz({year:2018, month:2, day:15, hour:17}, timezone) //statement3
输出> moment.parseZone("2018-03-15T17:00:00.000-04:00")
我无法理解为什么声明 1 没有给出正确的日期时间。
谢谢您的帮助。
解决方案
不同之处在于第一个日期是在 2 月,在夏令时之外,而第二个日期是在 6 月,在夏令时之内。因此,每个日期的 UTC 偏移量分别为 -5 和 -4 小时。
请记住,大多数时区的 UTC 偏移量会随一年中的时间而变化,切勿在您的代码中假设一个固定的偏移量。
推荐阅读
- javascript - SyntaxError:无法在模块 Typescript 错误之外使用 import 语句
- discord - 机器人旨在随机标记服务器中的某人仅标记自身
- javascript - JS全局变量在函数范围之外没有改变
- node.js - MERN stack 如何将联系人添加到组?
- python - 无法使用 Python 3.9 转换 mp3
- graph - 在邻接表中计算入度的复杂度是O(|E|)?
- windows - 自定义屏幕保护程序 - windows
- android - Firebase StreamBuilder 错误
- react-native - React Native:无法从 app.config.js 读取/更新 app.json
- python - 如果 B 列包含某些内容,则 A 列的整行将成为某些内容