月份格式说明符似乎不起作用。
from datetime import datetime
endDate = datetime.strptime('10 3 2011', '%j %m %Y')
print endDate
2011-01-10 00:00:00
endDate = datetime.strptime('21 5 1987', '%j %m %Y')
print endDate
1987-01-21 00:00:00
现在,根据手册手册
%m =月份为小数01,12。
那么,我遗漏了什么,除了我拔出的头发试图理解为什么django __filter查询什么都不返回(日期是无效的!)?我试过03
和05
都没有用。
事物、平台、架构等的版本:
$ python --version
Python 2.7
$ python3 --version
Python 3.1.2
$ uname -r
2.6.35.11-83.fc14.x86_64 (that's Linux/Fedora 14/64-bit).
发布于 2011-03-09 07:00:39
您不能将%j
与其他格式代码(如%m
)混在一起,因为如果您查看链接的表中的%j是一年中的一天作为十进制数001,366,所以10对应于一年中的10天,所以是1月的01…
所以你只需要写:
>>> datetime.strptime('10 2011', '%j %Y')
datetime.datetime(2011, 1, 10, 0, 0)
否则,如果您想使用10作为挂载的一天,您应该这样做:
>>> datetime.strptime('10 3 2011', '%d %m %Y')
datetime.datetime(2011, 3, 10, 0, 0)
发布于 2011-03-09 07:00:04
%j
不是“一年中的一天”解析器吗?它可能迫使strptime
选择1月21日,凌驾于%m
规则之上?
发布于 2011-03-09 07:03:48
%j
指定一年中的某一天。一年中的第十天,即1月10日,不可能发生在3月,所以您的月份规范被忽略了。垃圾进来,垃圾外泄。
https://stackoverflow.com/questions/5247582
复制