javascript - 如何在 javascript 中强制 Date.parse() 转换为本地时间和日期而不是 UTC
问题描述
我有一个应用程序,我在其中调用函数 Date.parse,如下所示:
Date.parse('2021-02-22' + ' ' + '13:00')
但是,当我在本地和生产环境 (AWS) 中运行应用程序时,此函数似乎返回两个不同的结果。在本地返回 1613959200000,而在生产中返回 1613998800000。经过进一步调查,1613959200000 似乎在澳大利亚东部夏令时间 13:00 转换为 2021-02-22,而 1613998800000 在 UTC 时间 13:00 转换为 2021-02-22时间。有没有办法可以强制 Date.parse() 转换为客户端/浏览器的本地时区,而不是 UTC?(在这种情况下,澳大利亚东部夏令时间,但我希望它适用于所有时区)。
编辑:我尝试使用日期对象,以生成与本地时区同步的日期/时间对象,但它似乎不起作用,如下面的代码所示:
var d = new Date("Mon Feb 22 2021 00:00:00 GMT+1100 (Australian Eastern Daylight Time)");
var ds = d.toString();
var e = new Date(2021,2,22,0,0)
var es = e.toString();
console.log(ds === es) //returns false for some reason
解决方案
根据 ECMAScript 规范,您只需使用 aT
而不是空格来分隔日期和时间部分。
const t = Date.parse('2021-02-22' + 'T' + '13:00');
console.log(t); // result will differ depending on local time zone
该格式在日期时间字符串格式下进行了完整描述。此外,在它的文档中Date.parse
指出:
...当 sss 元素不存在时,使用“000”。当 UTC 偏移表示不存在时,仅日期形式被解释为 UTC 时间,而日期时间形式被解释为本地时间。
因此,组合字符串2021-02-22T13:00
将被解释为2021-02-22T13:00:00.000
本地时区,因为它是日期时间形式。
推荐阅读
- javascript - 如何使用 this.$emit 将数据发送到 span 而不是输入
- java - 带有嵌套标签的 JAXB 编组
- html - 如果我只喜欢在 HTML 文件中引导,如何在 SASS 中扩展引导类?
- mysql - 分区将如何影响我当前在 MySQL 中的查询?什么时候对我的表进行分区?
- php - 生成一个不超过 3 个重复数字的 9 位数字
- amazon-web-services - 如何使用 Packer 将 AMI 复制到另一个帐户?
- c - GLib 树插入总是插入同一个节点
- python - PyCharam AddReferenceToFileAndPath 属性错误
- c# - 当模型是列表时在视图中验证模型
- python - 如何在没有 HTTP 的情况下创建类似于 REST API 的“东西”?