问题遇到的现象和发生背景
别人的也是这样的代码,到我这就报错了
用代码块功能插入代码,请勿粘贴截图
# 这个文件名是mode.py
import datetime
def moment(dt, now):
diff = now-dt
if diff.days < 0:
return '未来时间'
if diff.days > 365:
return dt.strftime('%Y年%m月')
if diff.days > 30:
return dt.strftime('%Y年%m月%d日')
if diff.days > 1:
return '{}天前'.format(diff.days)
if diff.seconds//60//60 > 0:
return '{}小时前'.format(diff.seconds//60//60)
if diff.seconds//60 > 0:
return '{}分钟前'.format(diff.seconds//60)
if diff.seconds >= 0:
return '{}秒前'.format(diff.seconds)
# 这个是测试的文件名为test.py
# 实现根据待显示的时间和当前时间的时间差展示不同的样式。如果时间差大于一年(此处以天为例),则显示哪年哪月,
# 如果时间差小于或者等于一年且大于一个月(此处以天为例),则显示哪年哪月哪日;如果时间差小于或者等于一个月
# 且大于一天,则显示几天前。 以此类推,显示几个小时前、几分钟前和几秒前。
from datetime import datetime
from mode import moment
if __name__ == '__main__':
now = datetime(2022, 10, 11, 12, 59, 10)
for dt in [
datetime(2021, 9, 12, 12, 59, 10),
datetime(2020, 8, 12, 12, 59, 10),
datetime(2023, 7, 12, 12, 59, 10)
]:
print('{}-->{}:{}'.format(dt, now, moment(dt, now)))
运行结果及报错内容
> E:\python\Lib\pythonProject1\Scripts\python.exe D:/PythonDemo/pythonProject1/test1.py
Traceback (most recent call last):
File "D:/PythonDemo/pythonProject1/test1.py", line 18, in <module>
print('{}-->{}:{}'.format(dt, now, moment(dt, now)))
File "D:\PythonDemo\pythonProject1\mode.py", line 14, in moment
return dt.strftime('%Y年%m月')
UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: encoding error
Process finished with exit code 1
我的解答思路和尝试过的方法
我把%Y改为%y或者删了年这个字他也报错
我想要达到的结果
正常输出