Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将日期从dd-mm-yy转换为dd-mm-yyy_Python_Date_Datetime - Fatal编程技术网

使用python将日期从dd-mm-yy转换为dd-mm-yyy

使用python将日期从dd-mm-yy转换为dd-mm-yyy,python,date,datetime,Python,Date,Datetime,我有一个日期输入'date_dob',即'53年4月20日' 我尝试使用以下代码将其转换为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'

我有一个日期输入'date_dob',即'53年4月20日' 我尝试使用以下代码将其转换为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
    :显示年份的所有四位数

    • 官员是你的朋友。咨询它;-)

      %y->不带世纪的年份,作为零填充十进制数

      %Y->以世纪为十进制数的年份

      所以使用这种方法

      format='%d-%b-%Y'