Python法语日期格式化异常:星期显示格式不符求助
解决法语日期格式化的两个问题:星期格式异常与秒数缺失
你遇到的是法语本地化日期格式化的两个典型小问题:星期缩写小写带点,以及输出结果缺少秒数。我来一步步帮你搞定:
1. 快速修复秒数缺失问题
这个问题最直接——你的格式化字符串"%a %d %b %Y %H:%M"里没有包含秒数的格式符。只需要把%H:%M改成%H:%M:%S,就能输出带秒数的时间部分了。
2. 修正星期缩写的格式
法语locale下,strftime的%a默认返回的是小写带点的星期缩写(比如ven.),而你需要的是首字母大写且无点的格式。这里可以通过简单的字符串处理来修正:
- 先获取原始格式化结果,拆分出星期部分和剩余内容
- 去掉星期部分末尾的点,再将首字母大写
- 重新拼接成最终的日期字符串
完整代码示例
import locale import datetime # 设置法语本地化(注意:不同系统可能需要不同的locale名称,比如Linux/macOS常用'fr_FR.UTF-8',Windows用'French') try: locale.setlocale(locale.LC_ALL, 'French') except locale.Error: # 备选locale名称,防止设置失败 locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') # 获取当前日期 startDate = datetime.datetime.now() # 先按包含秒数的格式获取原始结果 raw_formatted = startDate.strftime("%a %d %b %Y %H:%M:%S") # 处理星期部分 weekday, rest = raw_formatted.split(' ', 1) fixed_weekday = weekday.rstrip('.').capitalize() # 拼接最终结果 final_result = f"{fixed_weekday} {rest}" print(final_result) # 输出示例:Ven 29 Mar 2019 22:53:00
补充说明
如果你的环境允许引入第三方库,也可以用babel来更优雅地处理本地化格式,它能直接生成符合需求的星期缩写。不过如果不想增加额外依赖,上面的字符串处理方法已经足够简单有效。
内容的提问来源于stack exchange,提问作者Amy
相关产品推荐
相关产品推荐

