Python Datetime设置西语locale后%p缺失问题求助
解决设置es_ES locale后datetime格式化中%p消失的问题
这不是datetime库的bug,核心原因是西班牙语(es_ES)的locale默认采用24小时制体系,没有定义AM/PM对应的本地化字符串,所以切换到该locale后,%p格式化符会输出空内容。
给你两个更简便的解决思路:
拆分处理时间与日期部分:
既然你需要西班牙语的月份,但想保留英文的AM/PM标识,直接把时间和日期分开格式化,再拼接结果即可,不需要维护额外的月份字典:import datetime import locale # 配置西班牙语locale locale.setlocale(locale.LC_TIME, 'es_ES.utf8') # 假设这是从API获取的UTC时间 utc_time = datetime.datetime.utcnow() # 时间部分用默认locale保留AM/PM,日期部分用西班牙语locale time_str = utc_time.strftime("%I:%M:%S %p") date_str = utc_time.strftime("%d de %B del %Y") final_output = f"{time_str} . {date_str}" print(final_output)手动补全西班牙语locale的AM/PM定义(如果需要西班牙语风格的标识):
西班牙语日常很少用12小时制,但如果确实需要,可以手动覆盖locale的am_pm配置,这样就能直接用原格式字符串格式化:import datetime import locale locale.setlocale(locale.LC_TIME, 'es_ES.utf8') # 手动设置西班牙语的AM/PM对应值,也可以用('a.m.', 'p.m.') locale._override_localeconv['am_pm'] = ('AM', 'PM') utc_time = datetime.datetime.utcnow() final_output = utc_time.strftime("%I:%M:%S %p . %d de %B del %Y") print(final_output)
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

