我正在解析Python 2.7中的一些日期时间字符串datetime.strptime.我想假设日期早于现在.
但strptime的%y运算符默认情况下不这样做:
d = '10/12/68'
n = datetime.strptime(d, '%d/%m/%y')
print n
2068-12-10 00:00:00
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我认为Python 68是1968常见的吗?
或者我应该只是解析字符串并插入19或20手动插入?
事实发生后很容易解决:
from datetime import datetime, timedelta
dt = datetime.strptime(...)
if dt > datetime.now():
dt -= timedelta(years=100)
Run Code Online (Sandbox Code Playgroud)
如果您的输入是本地时区:
from datetime import date
then = datetime.strptime('10/12/68', '%d/%m/%y').date()
if date.today() <= then: # *then* must be in the past
then = then.replace(year=then.year - 100)
Run Code Online (Sandbox Code Playgroud)
应该可以正常工作到2100(不含)。有关日历年算术的更多详细信息,请参见此处。
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |