运行strftime时报ValueError: Invalid format string错误的解决方法
错误产生原因
%P 属于GNU C库对strftime的扩展格式符,作用是输出小写的12小时制上午/下午标识(am/pm),该格式符不属于跨平台通用的C标准规范。Windows系统的MSVC运行库未实现该扩展,所有调用系统原生strftime实现的编程语言(包括Python、PHP、Ruby等)在Windows环境下使用%P时,都会抛出ValueError: Invalid format string格式无效错误。
对应的解决方案
- 优先使用跨平台通用的标准格式符
%p,该格式符会输出大写的AM/PM,如果需要小写效果,额外调用字符串转小写方法即可。以Python为例,修改后的代码为:string = strftime("%H:%M:%S %p").lower() - 跨平台开发场景下,避免使用
%P这类平台专属的扩展格式符,所有非标准格式需求都通过字符串后处理实现,抹平不同系统的实现差异。 - 如果仅在GNU/Linux、macOS环境部署,可以确认运行环境的C库支持
%P扩展,无需修改代码。
内容的提问来源于stack exchange,提问作者Biki Sarkar
相关产品推荐
相关产品推荐

