解析1000年之前的日期

2024-04-19 19:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下示例:

from datetime import datetime


FMT = "%Y-%m-%dT%H:%M:%S"

original_date = datetime(1,1,1)

s = original_date.strftime(FMT)  # This is '1-01-01T00:00:00'

当我现在尝试用我最初序列化它的格式将该字符串解析回datetime时,一个ValueError被抛出:

^{pr2}$

ValueError: time data '1-01-01T00:00:00' does not match format '%Y-%m-%dT%H:%M:%S'

然而

datetime.strptime('0001-01-01T00:00:00', FMT)

按预期工作。 我本以为strptime能够处理strftime产生的任何东西。我一直认为这些函数是相反的。在

为什么original_date.strftime(FMT)不会导致零填充年?这种不一致有什么原因吗?在


Tags: 字符串fromimport示例datetimedate序列化is
1条回答
网友
1楼 · 发布于 2024-04-19 19:28:38

%Y的结果在不同平台上不一致。在macosx上它将返回0001,但在Linux上它返回1。在

在Linux上,您可以使用%4Y生成0001作为年值。在

这是一个已知问题:https://bugs.python.org/issue13305。在

strftime()和{}的文档也声明:

The full set of format codes supported varies across platforms, because Python calls the platform C library’s strftime() function, and platform variations are common. To see the full set of format codes supported on your platform, consult the strftime(3) documentation.

相关问题 更多 >