我想'以这种格式解析日期,但忽略部分字符串。 '周三,1770年10月27日22:17:00格林威治标准时间'从我收集的信息来看,日期时间并不能很好地支持时区。这很好,我真的只想忽略字符串的时区部分,而不必对其进行字符串操作。有什么我可以用下面的替换%Z来说“这里有任何字符串”和解析日期?另外,我不明白为什么它会解析像PST,GMT而不是EST的时区。无论如何,它似乎没有附加tzinfo,不知道它真正寻找%Z部分的字符串是什么类型。Python解析日期格式,忽略部分字符串
>>> import datetime
>>> y = datetime.datetime.strptime('Wed, 27 Oct 1770 22:17:00 GMT', '%a, %d %b %Y %H:%M:%S %Z')
>>> y = datetime.datetime.strptime('Wed, 27 Oct 1770 22:17:00 PST', '%a, %d %b %Y %H:%M:%S %Z')
>>> y = datetime.datetime.strptime('Wed, 27 Oct 1770 22:17:00 EST', '%a, %d %b %Y %H:%M:%S %Z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/brazil-pkg-cache/packages/Python/Python-2.5.1.17.1/RHEL5_64/DEV.STD.PTHREAD/build/lib/python2.5/_strptime.py", line 331, in strptime
(data_string, format))
ValueError: time data did not match format: data=Wed, 27 Oct 1770 22:17:00 EST fmt=%a, %d %b %Y %H:%M:%S %Z
注:dateutil不是我的选择,我想支持众多格式,不能让dateutil意外地解释日期是错误的。 (即dateutil似乎在看到2010年2月1日,2月1日或1月2日等日期时会进行猜测)。我基本上只想尝试接受我在订单中指定的格式,直到我得到一个匹配。
纯代码答案本身没有帮助,因为它们倾向于推广_copy-and-paste编程。只要有可能,应该给出代码的解释和_why_它的作用。 :) – Miguel 2012-11-04 01:23:26
尽管我同意@Miguel,但对于解决问题的唯一答案+1。 – 2012-11-04 01:24:45
是不是这样简单:''.join('星期三,2011年10月17日22时22分22秒+ 0300'.split()[1:6])上述不会工作时区设置的B/C。你会得到ValueError:未转换的数据仍然存在 – radtek 2014-11-13 16:34:49