【问题标题】:Does numeric date require a time-zone, when creating a new Date object?创建新的 Date 对象时,数字日期是否需要时区?
【发布时间】:2020-11-15 11:32:17
【问题描述】:

出于几个原因,我有一个来自服务器的日期作为“YYYY-MM-DD hh-mm-ss”格式的字符串。当我使用该字符串创建新的 Date 对象时,它会在本地时间创建日期。 要正确创建日期,我必须将时区添加到该字符串:“YYYY-MM-DD hh-mm-ss PDT”。

但是当我将时间作为数值获取时 - 我在创建对象时从不添加时区,因为数值始终被视为 UTC。

我的意思是我们知道JS treats the timestamp as UTC,但是如果 UTC 值随着某些时区相关性而更新,有没有办法理解它?

可能类似于Math.isTimePossible(ms)。 jk ofc。

【问题讨论】:

    标签: javascript date


    【解决方案1】:

    出于几个原因,我有一个来自服务器的日期作为“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 支持的格式之一的字符串(仅限于 toStringtoISOString 生成的相同格式),那么编写定制函数或使用库。有些允许使用 IANA 代表位置指定偏移信息,例如 Luxondate-fns

    【讨论】:

    • 我想这就是我想要的。奇怪的是,字符串实际上正在解析。但是我一直在寻找的是您是否可以定义数字格式的日期实际上是UTC,还是根据时区更改。我认为这是不可能的,您的回答实际上解释了一些额外的事情。谢谢!
    猜你喜欢
    • 2020-08-18
    • 2017-08-21
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多