将月份字符串转换为日期中的数字



有更好的方法将月份字符串转换为数字吗?月份名称是用不同于区域设置的语言提供的,所以我不能在datetime中使用%B。调整本地不是一个选项。

def stringMonthToNumber(data):
data= re.sub("Januar", "01.", data)
...
data= re.sub("Dezember", "12.", data)
return data

data=";2022年1月1日";

如果源字符串的格式与问题中所示完全相同,那么这就足够了:

MONTHS = {
'Januar': '01',
'Februar': '02',
'März': '03',
'Maerz': '03',
'April': '04',
'Mai': '05',
'Juni': '06',
'Juli': '07',
'August': '08',
'September': '09',
'Oktober': '10',
'November': '11',
'Dezember': '12'
}
def convert(ds):
return ds[:3] + MONTHS[ds[3:-4]] + '.' + ds[-4:]
print(convert('01.Juli2022'))

输出:

01.07.2022

假设输入字符串以DD.开头,以YYYY结尾。

还假设该语言为德语

假设您的输入始终是示例中的格式,那么:

months = {
'Januar': '01.',
...
'Dezember': '12.'
}
def stringMonthToNumber(data):
month = data[3:-4]
if month not in months:
raise ValueError(f'Invalid month in date: {data}')
data= f'{data[0:3]}{months[month]}{data[-4:]}'
return data

最新更新