在Python中转换日期

0 投票
2 回答
43 浏览
提问于 2025-04-14 16:18

我有一个日期的列表,每个日期都在不同的行上。我的任务是把这些日期转换成日期时间对象,或者以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)

撰写回答