把时间格式化成一个字符串中,加中文或英文会报错,但是加符号不会报错,这是为什么!
把时间格式化成一个字符串中,加中文或英文会报错,但是加符号不会报错,这是为什么?from datetime import datetime
t = datetime.now() #拿取 此刻的时间
print(t)# 此刻的时间值 >>>2021-08-13 22:02:07.605720
print(t.strftime("%Y年%m月%d日 %H小时%M分钟%S秒")) # 这样加了中文或英文会报错>>>UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: encoding error
#但是下面的俩行代码就不会报错,我想问一下这是为什么?
print(t.strftime("%Y-%m-%d %H:%M:%S")) # >>>2021-08-13 22:02:53
print(t.strftime("%Y/%m/%d %H:%M:%S")) #>>>2021/08/13 22:03:29
麻烦了!!! python版本低了3.8以下会这样 试试
format(t,"%Y年%m月%d日 %H小时%M分钟%S秒")
f'{t:%Y年%m月%d日 %H小时%M分钟%S秒}' cmd环境下的编码问题,IDLE的shell里没有这个问题。
解决:
n.strftime("%Y{y}%m{m}%d{d}").format(y='年', m='月', d='日')
或
n.strftime("%Y{}%m{}%d{}").format('年', '月', '日') kogawananari 发表于 2021-8-13 22:49
python版本低了3.8以下会这样
我用的是3.7.0 我用pycharm编辑器,就会报错。但是在Python里的IDLE里编辑执行正常。 阿奇_o 发表于 2021-8-13 22:54
cmd环境下的编码问题,IDLE的shell里没有这个问题。
解决:
谢谢大兄弟!!!你的方法可行!!!
感谢!!! 阿奇_o 发表于 2021-8-13 22:54
cmd环境下的编码问题,IDLE的shell里没有这个问题。
解决:
大兄弟!!你知道为什么会在cdm环境下会报错不??? 星星飞 发表于 2021-8-14 08:58
我用的是3.7.0 我用pycharm编辑器,就会报错。但是在Python里的IDLE里编辑执行正常。
我以前实测3.7 time.strftime中文报错 3.8就好了不用from datatime 就直接time模块就报错
类似的还有calendar.LocaleTextCalendar 日历本地化 3.8中文报错 3.9修复
{:10_292:}
kogawananari 发表于 2021-8-14 11:37
我以前实测3.7 time.strftime中文报错 3.8就好了不用from datatime 就直接time模块就报错
类似的还 ...
日期时间的格式字符串报错,其实是因为调用了默认的C语言的字符处理函数,它在默认locale的编码环境下是按单字节来读取的(好像是ASCII),中文是双字节的,于是就报那错locale无法编译encode的错误。
(不升Python版本的话)比较通用的解决办法:可以直接临时修改locale配置,比如 在 程序(线程)开始时,设置一下
import locale
locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
这样设置,可以不单单解决中文时间格式字符串的问题,其他和 locale相关的日期、日历,地址格式,数字标点格式,打印等等,都会按按这个新配置的"语言_地区.字符编码"的各项标准来。
注:多线程的程序,为了"线程安全",或许还需要把locale设置回原来的(或写一个"上下文管理器"设置回原来的locale)
页:
[1]