在Python中转换日期
我有一个日期的列表,每个日期都在不同的行上。我的任务是把这些日期转换成日期时间对象,或者以DD.MM.YYYY的格式显示。但是这些日期的写法是这样的:
- 2008年12月3日
- 2009年2月13日
- 2009年6月26日
- 2010年3月20日
- 2013年4月6日
- 2015年9月13日
我不知道怎么把它们转换成DD.MM.YYYY的格式。
我试着用这段代码:
try:
date = datetime.datetime.strptime(string_date, '%b. %d, %Y').strftime('%d.%m.%y')
except ValueError:
date = datetime.datetime.strptime(string_date, '%B %d, %Y').strftime('%d.%m.%y')
但是这段代码不适合处理九月份的日期。
2 个回答
1
假设你不能使用任何第三方库,并且日期字符串的月份名称可能会不同(比如“九月”、“九月”、“September”):
string_date = string_date.split()
string_date[0] = string_date[0][:3]
" ".join(string_date)
date = datetime.datetime.strptime(string_date, '%b %d, %Y').strftime('%d.%m.%y')
如果问题只出在“九月”这个月份上,可以使用@OrenIshShalom的方法。
如果你可以使用第三方库,并且所有输入的日期字符串格式都不一样,可以使用@user19077881的方法。
2
与其自己编写代码,不如直接使用库里的日期解析器,这样更简单。如果你的日期是一个名为 dateslist
的列表中的字符串,那么你可以使用下面的代码来得到一个包含日期时间对象的列表:
from dateutil import parser
dates = []
for entry in datelist:
dates.append(parser.parse(entry))
print(dates)