时间转换(中文转数字)

#中文时间转换为****-**-**格式
def chinese2digit(text):
""""中文日期转换为数字日期"""
# 注意:输入格式必须是 二〇一二年十月十一日 年份不能写 两千零一二
chinese_to_digit_table = {'零':0, 'O':0, 'Ο':0, 'О':0, '○':0, 'O': 0, '0':0, '〇': 0, '一': 1, '二': 2, '两': 2,
'三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '十': 10}
year = text.split('年')[0]
month = text.split('年')[1].split('月')[0]
day = text.split('月')[1].split('日')[0]
newyear = ''
newmonth = 0
newday = 0
for i in year:
newyear += str(chinese_to_digit_table.get(i))
# 月份只有两种格式,十X、X,所以只需要从头开始转化为数值并且相加就好
for i in month:
newmonth += chinese_to_digit_table.get(i)
if newmonth < 10:
newmonth = '0' + str(newmonth)
# 日,会有三种格式,第一种就是十九以下都可以直接相加,第二种就是等于二十,第三种就是大于二十,这种的日期会有三个长度,只需读取第一个乘以10然后再加上最后一个数
if len(day) == 3:
newday = chinese_to_digit_table.get(day[0]) * 10 + chinese_to_digit_table.get(day[-1])
elif day == '二十':
newday = 20
elif day == '三十':
newday = 30
else:
for i in day:
newday += chinese_to_digit_table.get(i)
if newday < 10:
newday = '0' + str(newday)
newdate = newyear + str(newmonth) + str(newday)
if 'None' in newdate:
print('原数据:', text)
print('转换后:', newdate)
print('请自行修改')
# print(newdate)
return newdate
原文地址:https://www.cnblogs.com/zyl-kx/p/11315230.html