python中time.strftime不支持中文,报错UnicodeEncodeError: ‘locale’ codec can’t encode character ‘\u5e74’ in po…

2022年6月10日12:35:52

使用time.strftime将 "2020-10-10 10:10:10" 转化为  2020年10月10日10时10分10 报错:

import time
timestr="2020-10-10 10:10:10"
t=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")print(time.strftime("%Y年%m月%d日 %H时%M分%S秒",t))

python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in po...

根据错误可以看出,没有执行成功的原因是"%Y年%m月%d日 %H时%M分%S秒"中包含了中文,中文没有转化为unicode编码失败的。

解决方法:

方法一:先转为uncode编码执行,执行完后转为utf-8显示

import time
timestr="2020-10-10 10:10:10"
t=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")print(time.strftime("%Y年%m月%d日 %H时%M分%S秒".encode('unicode_escape').decode('utf8'),t).encode('utf-8').decode('unicode_escape'))

执行结果:

python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in po...

方法二:修改语言符号详情

import time,locale
timestr="2020-10-10 10:10:10"
t=time.strptime(timestr,"%Y-%m-%d %H:%M:%S")locale.setlocale(locale.LC_CTYPE,'chinese')print(time.strftime("%Y年%m月%d日 %H时%M分%S秒",t))

执行结果:

python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in po...

方法三:重写一个自定义转化函数

def change_time(timeStr:str,t_int=False)->str:import re
    t_text= ['','','','','','']
    re_t= re.compile("[\d|\.]+")
    str_time=''for k, vin zip(t_text, re_t.findall(timeStr)):if t_intand'.'in v :
            v=re.sub('\.\d+','', v)
        str_time+= str(v) + kreturn str_timeif__name__ =='__main__':print(datetime.now())
    t=change_time(str(datetime.now()))
    int_t=change_time(t,True)
    float_t=change_time(t)print(int_t)print(float_t)

执行结果:

python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in po...

转载于:https://www.cnblogs.com/feiquan/p/11217534.html

  • 作者:weixin_30299539
  • 原文链接:https://blog.csdn.net/weixin_30299539/article/details/101556846
    更新时间:2022年6月10日12:35:52 ,共 1151 字。