【问题标题】:strptime - Python converting time to epoch time? [duplicate]strptime - Python 将时间转换为纪元时间? [复制]
【发布时间】:2015-09-13 16:09:43
【问题描述】:

我正在尝试将时间转换为纪元时间。我收到以下错误: 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 定义在哪里?我在另一篇文章中找到了这个。

更新: 我的数据采用以下格式:11/Jan/2014: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
>>> 

【问题讨论】:

  • 你的 Python 的确切版本是什么?

标签: python datetime epoch


【解决方案1】:

你误解了%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 

【讨论】:

  • 实际上我的实际时间是这种格式:11/Jan/2014:08:33:48 -0800 - 它带有 -8000 的时区信息。我不能修改数据但需要修改代码
  • @user4687194 使用小写%z: docs.python.org/2/library/…。 (如果您愿意,请随时将其编辑为答案。)
  • 当我使用小写 z 时,出现错误:ValueError: 'z' is a bad directive in format '%d/%b/%Y:%H:%M:%S %z '
  • 是的,%zpython3 中得到支持,将此添加到答案中。同时寻找更好的解决方案。 @user4687194。
  • 您能否给出一个更清晰的答案 - 我遇到了错误。 (我安装了默认工具,没有问题)
猜你喜欢
  • 2017-06-01
  • 2014-05-03
  • 2012-01-30
  • 2021-08-07
  • 2019-07-31
  • 2010-09-12
  • 1970-01-01
  • 2012-09-06
  • 2012-08-12
相关资源
最近更新 更多