我正在使用pywin32读取/写入Excel文件.我在Excel中有一些日期,格式为yyyy-mm-dd hh:mm:ss.我想将它们作为datetime.datetime对象导入Python.这是我开始的代码行:
prior_datetime = datetime.strptime(excel_ws.Cells(2, 4).Value, '%Y-%m-%d %H:%M:%S')
那没用.我得到了错误:
strptime() argument 1 must be str, not pywintypes.datetime
我尝试将其转换为字符串,如下所示:
prior_datetime = datetime.strptime(str(excel_ws.Cells(2, 4).Value), '%Y-%m-%d %H:%M:%S')
那也不起作用.我得到了错误:
ValueError: unconverted data remains: +00:00
因此,我尝试了一些不同的方法:
prior_datetime = datetime.fromtimestamp(int(excel_ws.Cells(2, 4).Value))
仍然没有运气.错误:
TypeError: a float is required.
投向浮动广告并没有帮助.也不是整数. (嘿,我当时很绝望.)
我可能在找错地方了,但是我很难找到关于pywin32的任何常规文档,尤其是pywintypes或pywintypes.datetime.
有什么帮助吗?
解决方法:
所以问题是00:00时区偏移. Looking into this there’s not an out of the box solution for Python
datetime.datetime.strptime("2016-04-01 17:29:25+00:00", '%Y-%m-%d %H:%M:%S %z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/_strptime.py", line 324, in _strptime
(bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M:%S %z'
一种创可贴解决方案是剥离时区,但感觉很糟糕.
datetime.datetime.strptime("2016-04-01 17:29:25+00:00".rstrip("+00:00"), '%Y-%m-%d %H:%M:%S')
datetime.datetime(2016, 4, 1, 17, 29, 25)
环顾四周看起来(如果可以使用第三方库)dateutil解决了此问题,因此使用datetime.strptime更好.
在命令行上
pip install python-dateutil
码
>>> import dateutil.parser
>>> dateutil.parser.parse("2016-04-01 17:29:25+00:00")
datetime.datetime(2016, 4, 1, 17, 29, 25, tzinfo=tzutc())
标签:pywin32,python,excel 来源: https://codeday.me/bug/20191026/1939002.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。