javascript - 在香草javascript中使用UTC而不是本地时区获取日期对象
问题描述
我正在将日期时间上传到动态表单上的字段,并且表单需要接收 UTC 日期时间。如果我做这样的事情:
new Date(new Date().toISOString())
如果我 console.log 它显示为的日期:Fri Dec 18 2020 14:27:39 GMT-0500 (Eastern Standard Time)
我希望将对象打印为 UTC 时间,并将 UTC 指定为时区,否则表单(期望日期对象)会继续作为 EST 时间上传。
解决方案
日期对象只是 ECMAScript 纪元 1970-01-01T00:00:00Z 的毫秒偏移量。他们没有时区。当您对对象进行字符串化时,您会得到一个时间戳,该时间戳取决于所使用的方法。
大多数方法(例如toString)使用时区和偏移量的主机设置,并根据这些设置生成时间戳。
如果您想要一个符合 ISO 8601 且偏移量为零的字符串,请根据您想要的格式使用toISOString或toUTCString :
let d = new Date();
console.log(`local time : ${d.toString()}`);
console.log(`toISOString: ${d.toISOString()}`);
console.log(`toUTCString: ${d.toUTCString()}`);
在您的代码中,表达式:
new Date(new Date().toISOString())
首先为当前时刻创建一个 Date 对象,然后根据toISOString方法生成一个时间戳。然后将其解析回 Date 对象,因此结果与以下内容相同:
new Date();
推荐阅读
- azure-devops - Azure DevOps 管道和参数 - 它们是否需要转义以及如何转义?
- flutter - 应用未设置:此应用仍处于开发模式 - 通过 Facebook 2021 登录
- scenebuilder - SceneBuilder 使用 ContextMenu 冻结
- python - 比较 groupby 中的字符串行并将值分配给新列 pandas
- flutter - Flutter 2. 迁移后我遇到了 scrollview animateTo(...) 的问题,在 addPostFrameCallback 内部调用
- node.js - 通过依赖node-gyp的npm安装包失败
- html - 正在使用
s中的属性被认为是不好的做法,为什么? - node.js - 如何在节点js中获取router.get()之外的变量
- chart.js - ChartJS 3.0.2 中的时间序列刻度。带来错误“此方法未实现:找不到适配器或集成不完整......”
- python - Pytest 参数化在最后一次迭代后运行