首页 > 解决方案 > 使用 Python 以与 Javascript 完全相同的方式解析日期/时间字符串?

问题描述

我有一些客户端 JavaScript 代码,它读取一个字符串并尝试通过将其解析为 Date() 对象new Date(theString),将生成的 Date 作为 UTC 字符串显示给用户。如果它是一个不能转换为日期的字符串,当然,它会变成一个Invalid Date,在这种情况下,它会显示“不是日期/时间”。

我还有一些服务器端 Python 代码,它们基本上做同样的事情:获取用户提交的可能日期,并将其存储为 UTC 字符串或“非日期”。

诀窍是,我需要两段代码在每个字符串上的行为始终完全相同。我当然可以制作一个小型 Python 端点,它使用现有的 Python 代码将适当的响应发送回客户端,而不是使用Date()客户端,但由于各种原因,这是一个不受欢迎的解决方案。

那么有没有一种方法可以将 Python 中的字符串转换为日期,并且保证与 JavaScript 中的工作方式完全相同new Date(myString)

标签: javascriptpythondatetime

解决方案


那么有没有一种方法可以将 Python 中的字符串转换为日期,并保证其工作方式与 JavaScript 中的 new Date(myString) 完全相同?

不。

这是不可能的,因为:

  1. 除 ECMA-262 中指定的两种格式之外的字符串解析依赖于实现,并且很容易证明不同的实现以不同的方式解析相同的字符串(例如,为什么 Date.parse('COVINGTONOFFICE-2') 返回一个真实的日期?
  2. 没有记录各种实现如何解析不受支持的格式,因此您只能通过观察每个可能的字符串的行为来确定规则,包括在每个实现中看起来不像日期的字符串,然后知道您试图模仿哪个实现

推荐阅读