在日常使用虚拟环境的时候,使用不同的库的效果有些不大相同,曾经尝试过在使用datetime报错的时候,提示时输入的格式与文本不匹配。
ValueError: time data '1/8/2019 8:19:27 AM' does not match format '%d/%m/%Y %I:%M:%S %p'
在检查文本格式并没有发现不匹配的问题,
在jupyter notebook上运行也没有报错,甚至到该环境下的python中运行也没有报错。这会是什么问题呢?
正常调试也没有报错。这是什么原因呢?
from datetime import datetime
datetime.strptime('1/8/2019 8:19:27 AM', '%d/%m/%Y %I:%M:%S %p')
检验:
但是在运行脚本的时候总是报错ValueError,而且在使用pyinstaller库进行打包得到的exe也是得到一个datetime格式不匹配的报错。
但是在虚拟环境下使用python xxxx.py 运行的脚本模式是可以正常运行的。
查阅资料显示,网上说的是:
在使用在不同的虚拟环境下的环境导致的,要设置环境的问题。但这是在linux上的问题。
最后还是使用了一个能运行的正常的环境进行打包。
问题求解,感谢各位
最后在datetime下测试一个时间的转换得到的结果发现%p的参数所对应的文本不是AM\PM而是中文的上下午。
问题解决:
方案一:
关于使用到%p格式的问题,由于datetime 是读取本地系统环境的格式,时间格式%p是可以表示为AM或PM的,但是由于是中文环境下导致%p的格式为上午或下午。所以相应的'1/8/2019 8:19:27 AM'格式要replace为上下午
f = lambda x: '上午' if x == 'AM' else '下午'S = Senttime[0].replace(Senttime[0][-2:], f(Senttime[0][-2:]))
方案二:(推荐)
设置本地时间设定,由于不同系统间的地区编码可能存在差异,先适用windows 、uUbuntu上使用本地时间的地区设定。
import locale locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # 中文为zh_CN.UTF-8,会出现错误 datetime.strptime('1/8/2019 8:19:27 AM', '%d/%m/%Y %I:%M:%S %p')
在处理datetime时遇到ValueError,提示时间数据与'%d/%m/%Y %I:%M:%S %p'格式不匹配。问题出现在%p在中文环境下表示为“上午”或“下午”,而非AM/PM。解决方案包括替换字符串或设置本地时间设定以适应不同系统环境。

446

被折叠的 条评论
为什么被折叠?



