-1

我无法理解以下示例中的情况

>>> datetime.datetime.strptime("Aug 10", "%b %y")
datetime.datetime(2010, 8, 1, 0, 0)

有意义 %b 是月份名称的缩写,而 %y 是年份,因此 2010 年 8 月对应于datetime(2010, 8, 1, 0, 0)

但是,如果我将 %y 更改为 %m,其中 %m 是月份中的某一天,它会变得很奇怪

>>> datetime.datetime.strptime("Aug 10", "%b %m")
datetime.datetime(1900, 10, 1, 0, 0)

突然间它拒绝认出“八月”

4

1 回答 1

2

您的代码不起作用的原因很简单:%m不是月份的日期,而是月份的数量。现在月份首先匹配 8 月,然后是 10,这就是你得到的。尝试%d改为一个月中的某天。

>>> datetime.datetime.strptime('Aug 10', '%b %d')
datetime.datetime(1900, 8, 10, 0, 0)

另见8.1.7。strftime() 和 strptime() 行为

于 2013-08-14T02:53:07.520 回答