【发布时间】:2023-03-30 15:20:02
【问题描述】:
我有一个日期输入“date_dob”,即“20-Apr-53” 我尝试使用以下代码将其转换为格式 yyyy-mm-dd:
print pd.to_datetime(date_dob,format = '%d-%b-%y')
返回“2053-04-20 00:00:00”而不是“1953-04-20 00:00:00”
【问题讨论】:
我有一个日期输入“date_dob”,即“20-Apr-53” 我尝试使用以下代码将其转换为格式 yyyy-mm-dd:
print pd.to_datetime(date_dob,format = '%d-%b-%y')
返回“2053-04-20 00:00:00”而不是“1953-04-20 00:00:00”
【问题讨论】:
您需要明确检查年份,然后将其减去 100 年:
>>> import datetime
>>> my_date = '20-Apr-53'
>>> d = datetime.datetime.strptime(my_date, '%d-%b-%y')
>>> d
datetime.datetime(2053, 4, 20, 0, 0)
# ^ year = 2053
>>> if d.year > 2000:
... d = d.replace(year=d.year-100) # subtract year by 100
...
>>> d
datetime.datetime(1953, 4, 20, 0, 0)
# ^ year = 1953
>>> d.strftime('%Y-%m-%d') # %Y instead of %y, reason mentioned below
'1953-04-20'
# ^ all four digit of year
使用%Y 而不是%y 因为:
%y:显示年份的最后两位数
%Y:显示所有四位年份
【讨论】:
【讨论】: