strftime方法报错

问题遇到的现象和发生背景

别人的也是这样的代码,到我这就报错了

用代码块功能插入代码,请勿粘贴截图
# 这个文件名是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或者删了年这个字他也报错

我想要达到的结果

正常输出

img