有没有办法判断 Date.parse() 是否单独执行?

问题描述 投票:0回答:1

我目前正在构建旧 Usenet 帖子(从 1988 年到 1999 年)的数据库,我想从中提取相应的时间戳。正如所料,当时有很多非标准日期字符串在使用。尽管如此,

Date.parse()
方法提供了有希望的结果,尽管它以一种相当特殊的方式处理时区。

让我们回顾一下感兴趣的案例:

  1. 如果字符串包含(无论哪种形式)有效的日期、时间和时区信息,显然没有问题。

    例如

    "8 Aug 93 02:49:00 PDT"
    将被解释为(JSON 样式)
    1993-08-08T09:49:00Z

  2. 如果字符串根本不包含有效信息,因此无法解析,

    Date.parse()
    返回NaN,这也没关系。

  3. 但是,如果字符串包含有效的日期和时间信息,但没有时区信息,则

    Date.parse()
    会自行操作并采用本地时区。

    例如

    "8 Aug 93 02:49:00"
    将被解释为
    1993-08-08T00:49:00Z
    ,因为我目前位于 CEST(或 UTC+2)时区。

  4. 此外,如果字符串包含有效日期,但没有时间信息,

    Date.parse()
    再次自行发挥作用,尽管这次有所不同,假设是 UTC。

    例如

    "8 Aug 93"
    将再次被解释为
    1993-08-07T22:00:00Z
    ,因为我目前位于 CEST 时区。

情况 3 和 4 构成了当前任务的一个主要问题,因为生成的 Date 对象与通过解析完全指定的字符串获得的对象无法区分。例如,

"8 Aug 93 02:49:00"
(情况 3)将被解释为与
"8 Aug 93 00:49:00 GMT"
相同 - 但仅限于程序当前运行的时区!或者,
"8 Aug 93"
(情况 4)最终将与
"8 Aug 93 00:00:00 GMT+2"
(再次假设 CEST)无法区分。

所以我的问题是:

Date.parse()
是否可以被迫告诉程序员在解析过程中是否做出了假设,如果是的话是哪些假设?

理想情况下,我希望能够自己审查不完整的信息,并可能根据其他可用信息进行纠正。例如,如果原始文本是在八月份从华盛顿大学的服务器发布的,那么时区应该是PDT——而不是我当前的本地时区;也不是UTC。

javascript date time timezone usenet
1个回答
0
投票

是否可以强制

Date.parse()
告诉程序员在解析过程中是否做出了假设,如果是的话,是哪些假设?

不。不过,有许多日期库可以让您完全控制解析。

© www.soinside.com 2019 - 2024. All rights reserved.