javascript - 创建新的 Date 对象时,数字日期是否需要时区?
问题描述
出于几个原因,我有一个来自服务器的日期作为“YYYY-MM-DD hh-mm-ss”格式的字符串。当我使用该字符串创建新的 Date 对象时,它会在本地时间创建日期。要正确创建日期,我必须将时区添加到该字符串:“YYYY-MM-DD hh-mm-ss PDT”。
但是当我将时间作为数值获取时 - 我在创建对象时从不添加时区,因为数值始终被视为 UTC。
我的意思是我们知道JS 将时间戳视为 UTC,但是如果使用某些时区相关性更新 UTC 值,有没有办法理解它?
也许像Math.isTimePossible(ms)
. jk ofc
解决方案
出于几个原因,我有一个来自服务器的日期作为“YYYY-MM-DD hh-mm-ss”格式的字符串。当我使用该字符串创建新的 Date 对象时,它会在本地时间创建日期。
你如何创建一个日期?ECMA-262 不支持该格式,因此解析取决于实现。Safari 至少将其视为无效日期。
要正确创建日期,我必须将时区添加到该字符串:“YYYY-MM-DD hh-mm-ss PDT”。
这不是一个好主意,请参阅#1。
我的意思是我们知道 JS 将时间戳视为 UTC,
如果“时间戳”是指数值,那么是的,它们被视为从 ECMAScript 纪元 (1970-01-01T00:00:00Z) 开始的偏移量(以毫秒为单位)。时间戳是可以解释为日期或时间的任何内容,因此“2020-11-13 00:00:00”、“星期二,晚上 11 点”和“123456”都是时间戳。
但是如果 UTC 值通过某些时区相关性进行更新,有没有办法理解它?
不清楚你的意思,UTC就是UTC。如果要解析不是 ECMA-262 支持的格式之一的字符串(仅限于toString和toISOString生成的相同格式),请编写定制函数或使用库。有些允许使用 IANA 代表位置指定偏移信息,例如Luxon和date- fns 。
推荐阅读
- react-native - AsyncStorage.removeItem 未删除该项目
- ruby-on-rails - 如何在 Rails 中准确定义 Controller 名称?
- apache-spark - 将列表应用于pyspark数据框中的密集向量
- python - 通过电子邮件将 pandas 数据框作为 csv 附件发送
- maven - Maven 在 Jenkinsfile 中跳过之前的构建阶段
- javascript - 带有 Material-UI 的 SSR 上的 @emotion/cache 始终为空
- python - 如何在 django 中使用 id 或 pk 检索数据
- sql - 如果数据来自 sql 视图中的某个表,则创建列
- snowflake-cloud-data-platform - 将 COPY INTO 与镶木地板一起使用时附加“_COL_0”的雪花
- kotlin - 如何删除arrayListOf kotlin中的匹配项