gpt4 book ai didi

python 将字符串转换为日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:51 24 4
gpt4 key购买 nike

我有一个循环,我尝试处理一组数据,其中一个操作是将普通字符串转换为日期时间。一切正常,除了有时会发生奇怪的事情……这就是我所知道的

  • 总是有完全相同的参数进入函数
  • 那些参数总是相同的类型
  • 我第一次运行它时,它总是得到 trought
  • 当它到达 appx 80% 循环中的第二个元素时抛出值错误(时间数据与格式不匹配)
  • 但是在我再次运行之后,一切正常,它卡在了下一个元素...

因为我的功能非常大,而且有很多事情正在发生,所以我决定为您提供一些我在这里写的简单代码,只是为了澄清:

data = ['January 20 1999', 'March 4 2010', 'June 11 1819']
dformat = '%B %d %Y'

for item in data:
out = datetime.datetime.strptime(item, dformat)
print out

虽然这在我的程序中显然有效,但它没有……我已经尝试了我想出的所有方法,但还没有成功,因此我很高兴你提供的任何想法谢谢

顺便说一句:我总是遇到这样的错误

ValueError: time data did not match format:  data=March 4 2010  fmt=%B %d %Y

最佳答案

您可能设置了不同的语言环境。 %B 在使用英语的语言环境中是 March,但在其他语言环境中它会失败。

例如:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'sv_SE.utf8')
'sv_SE.utf8'
>>> import datetime
>>>
>>> data = ['January 20 1999', 'March 4 2010', 'June 11 1819']
>>> for item in data:
... print datetime.datetime.strptime(item, '%B %d %Y')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/lib/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data 'January 20 1999' does not match format '%B %d %Y'

在这里您可以看到,即使格式确实 匹配,但它声称它不匹配。那是因为月份名称不匹配。将其更改为瑞典语言环境名称,它再次起作用:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'sv_SE.utf8')
'sv_SE.utf8'
>>> import datetime
>>>
>>> data = ['Januari 20 1999', 'Mars 4 2010', 'Juni 11 1819']
>>> for item in data:
... print datetime.datetime.strptime(item, '%B %d %Y')
...
1999-01-20 00:00:00
2010-03-04 00:00:00
1819-06-11 00:00:00

(请注意,上述语言环境“sv_SE.utf8”可能对您不起作用,因为您必须安装该特定语言环境。要查看在 Unix 机器上安装了哪些语言环境,请从命令行运行此命令:

$ locale -a
C
en_AG
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NG
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
sv_FI.utf8
sv_SE.utf8

)

关于python 将字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4617267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com