【发布时间】:2020-10-09 06:56:40
【问题描述】:
我有一个 UTC 格式的日期 `2020-06-19T03:55:12.000Z。现在我将转换为美国时区的日期为
let syncDate = moment(date, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]')
.subtract(7, 'hours')
.format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
这给了我一个比美国日期晚 7 小时的日期。但我想要以下格式的日期
2020-06-18T21:00:24.523-07:00
如果我们可以看到小时被定义为 -7 那么请指导我们如何实现相同的目标?
【问题讨论】:
-
美国的日期时间因美国的时区而异,并且不固定为 7,除非是这种情况。我不确定你是否知道这一点。美国有大约 5 个时区可供查询。
-
我还可以补充一点,保持 UTC 时间是有优势的;只是在格式化时间以用于显示目的或其他用于记帐的逻辑时,可以在不更改存储的 UTC 日期时间的情况下进行转换。
-
关于您的问题,示例数据字符串(格式)
2020-06-18T21:00:24.523-07:00有两个明确的分隔符。第一个是T。第二个似乎有两个可能的值,-或+,然后是与 UTC 的小时差。 -
那么我们可以创建这样的显示格式吗?
-
你可以通过一个简单或复杂的方法创建一个模拟相同的函数。我刚刚重新阅读了您的帖子并意识到您正在使用 moment.js。在重新发明轮子之前,我会先检查他们的 API 文档。但回顾一下,我们在同一页上:第一个标记是 UTC 日期,第二个(之后)
T是 UTC 时间,-或+之后的第三个是差异(将其带到目标时区)?
标签: javascript node.js date types momentjs