我正在尝试将时间转换为纪元时间。我收到的错误是:
ValueError: time data '11/Jan/2014:08:33:48 -0800' does not match format '%d/%b/%Y:%H:%M:%S %Z'
import time
def epoch_time(epoch):
d = "11/Jan/2014:08:33:48 -0800"
p='%d/%b/%Y:%H:%M:%S %Z'
epoch = int(time.mktime(time.strptime(d,p)))
print epoch
我的上述代码有什么问题?
我的第二个问题是在os.environ [TZ] ='UTC'中定义的TZ在哪里?我在另一篇文章中找到了这个。
更新: 我的数据采用以下格式:2014年1月11日:08:33:48 -0800 - 它的时区信息为-8000。我无法修改数据但需要修改代码。使用Python 2.7.6
>>> from dateutil import parser
>>> dd = parser.parse('11/Jan/2014:08:33:48 -0800')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/dateutil/parser.py", line 1008, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/dateutil/parser.py", line 395, in parse
raise ValueError("Unknown string format")
ValueError: Unknown string format
>>>
答案 0 :(得分:0)
您误解了%Z
(时区名称(如果不存在时区,则没有字符)。)
试试这个:
import time
def epoch_time(epoch):
d = "14/Jan/2014:09:36:50 PST"
p='%d/%b/%Y:%H:%M:%S %Z'
epoch = int(time.mktime(time.strptime(d,p)))
print epoch
a = None
epoch_time(a)
Time Zone Abbreviations – Worldwide List
根据this answer,您的问题有更好的解决方案。
from dateutil import parser
yourDate = parser.parse(yourString)
如果您使用python3
,建议使用@ {jpmc26,请使用%z
语法。
d = "11/Jan/2014:08:33:48 -0800"
p='%d/%b/%Y:%H:%M:%S %z' #python3 required