如何从字符串中确定日期格式?

Kau*_*nki 7 javascript datetime

今天已经问过这个问题,但所有者似乎已将其删除(即使它有 4 个投票)。但是这个问题很有趣,我决定再次自己发帖。

我在 Javascript 中有一个对象,它有一个带有日期字符串的属性。

现在我想为该属性设置一个新的日期时间,但是如何在不知道其格式的情况下设置新数据?

示例日期时间看起来像这样“2018-01-01T20:09:00”

这个问题可以分为2个答案。

  1. 识别当前提到的格式并将相同的格式设置为对象属性。(如果有人说这是什么类型的日期时间格式,这似乎很容易实现)

  2. 确定一些确定任何日期时间格式并将给定日期时间转换为设置对象属性的通用解决方案。

Lia*_*iam 3

塔尔;博士

你不能这样做,这是不可能的。


这里卖很多蛇油。

日期格式并不相互排斥,两种(或多种)格式可能看起来相同,但值代表日期的不同部分。这使得从字符串确定日期格式实际上是不可能的。

例如,英国格式01/02/20222022 年 2 月 1 日,美国格式为2022 年 1 月 2 日。所以给定字符串 01/02/2022您无法确定这是英国格式还是美国格式。

给定一个想象的方法,returnFormat("01/02/2022")您期望这里的响应是什么?它可能返回 en-US 或 en-GB 或其他重叠格式。

日期格式的设计并未考虑到计算机解析。为计算机设计的唯一日期格式是ISO 8601 格式(例如2008-05-11T15:30:00Z),它可以包含 UTC 偏移量。所以带有 a 的时间Z是 utc 并且+01:00将是 UTC +1。这种格式是专门选择的,以免与任何人类可读格式冲突以解决上述问题。