用strftime()自定义时间格式, 报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in posit...

1、Python time strftime()方法

描述

Python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。

语法

strftime()方法语法:

time.strftime(format[, t])

参数

format -- 格式字符串。

t -- 可选的参数t是一个struct_time对象。

2、ws['A3']=time.strftime("%Y年%m月%d日 %H时%M分%S秒",time.localtime()),当格式中存在中文字符时会报错“UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: Illegal byte sequence”

用strftime()自定义时间格式, 报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in posit..._第1张图片

3、解决方法:

方法一:

import local

locale.setlocale(locale.LC_CTYPE,'chinese')

备注:“在Windows里,time.strftime使用C运行时的多字节字符串函数strftime,这个函数必须先根据当前locale配置来编码格式化字符串(使用PyUnicode_EncodeLocale)。”如果不设置好locale的话,根据默认的"C" locale,底层的wcstombs函数会使用latin-1编码(单字节编码)来编码格式化字符串,导致多字节编码的字符串在编码时出错。

方法二:

通过format函数对中文格式字符

ws['A3']=time.strftime("%Y{Y}%m{m}%d{d} %H{H}%M{M}%S{S}",time.localtime()).format(Y='年',m='月',d='日',H='时',M='分',S='秒')

你可能感兴趣的:(用strftime()自定义时间格式, 报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in posit...)