月份格式说明符似乎不起作用。
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
现在,根据手册the manual:
%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).
答案 0 :(得分:6)
您无法将%j
与其他格式代码(例如%m
)混合使用,因为如果您查看表格中您链接的%j是一年中的日期,则为十进制数字[001,366] 10对应于一年中的10天所以它是1月1日...
所以你只需要写:
>>> 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)
答案 1 :(得分:3)
%j
不是“一年中的某一天”解析器,可能会强制strptime
选择1月21日,覆盖%m
规则吗?
答案 2 :(得分:2)
%j
指定一年中的某一天。 1月10日的第10天不可能在3月份发生,因此您的月份规格将被忽略。垃圾进,垃圾出。