Python:转换2位/4位年份
Python: Convert 2-digit / 4-digit year
我正在尝试使用以下代码将 Python 中的日期格式“31-Dec-09”转换为“2009-12-31”:
df = ['19-Jan-19', '4-Jan-19']
f = [datetime.datetime.strptime(x,'%d-%mmm-%y').strftime('%Y-%m-%d') for x in df]
print(f)
出现以下错误:
time data '9-Jan-19' does not match format '%d-%mmm-%y'
我在某处读到,匹配两位数的年份“00”需要小写的 y 而不是大写的 y。无论哪种方式,我都会遇到同样的错误,所以我猜是其他地方出了问题。有帮助吗?
您的 %y
和 %Y
模式很好,问题是您在这里使用了 %mmm
。 datetime.strptime()
方法模式都是 单字母 模式,而 %mmm
被视为 %m
模式后跟两个文字 m
字符. %m
匹配数字月份(1 位或 2 位数字,零填充可选)。所以 19-1mm-19
会匹配,但 19-Jan-19
不会匹配,因为月份不是数字并且缺少两个文字 m
字符。
此处要使用的正确模式是 '%d-%b-%y'
,其中 %b
匹配缩写的月份名称。
演示:
>>> import datetime
>>> df = ['19-Jan-19', '4-Jan-19']
>>> [datetime.datetime.strptime(x,'%d-%b-%y').strftime('%Y-%m-%d') for x in df]
['2019-01-19', '2019-01-04']
由于您以简写形式指定月份,因此您应该使用 %b 而不是 %mmm(这不是日期时间中的有效格式)
我正在尝试使用以下代码将 Python 中的日期格式“31-Dec-09”转换为“2009-12-31”:
df = ['19-Jan-19', '4-Jan-19']
f = [datetime.datetime.strptime(x,'%d-%mmm-%y').strftime('%Y-%m-%d') for x in df]
print(f)
出现以下错误:
time data '9-Jan-19' does not match format '%d-%mmm-%y'
我在某处读到,匹配两位数的年份“00”需要小写的 y 而不是大写的 y。无论哪种方式,我都会遇到同样的错误,所以我猜是其他地方出了问题。有帮助吗?
您的 %y
和 %Y
模式很好,问题是您在这里使用了 %mmm
。 datetime.strptime()
方法模式都是 单字母 模式,而 %mmm
被视为 %m
模式后跟两个文字 m
字符. %m
匹配数字月份(1 位或 2 位数字,零填充可选)。所以 19-1mm-19
会匹配,但 19-Jan-19
不会匹配,因为月份不是数字并且缺少两个文字 m
字符。
此处要使用的正确模式是 '%d-%b-%y'
,其中 %b
匹配缩写的月份名称。
演示:
>>> import datetime
>>> df = ['19-Jan-19', '4-Jan-19']
>>> [datetime.datetime.strptime(x,'%d-%b-%y').strftime('%Y-%m-%d') for x in df]
['2019-01-19', '2019-01-04']
由于您以简写形式指定月份,因此您应该使用 %b 而不是 %mmm(这不是日期时间中的有效格式)