Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何将此格式转换为unix时间戳?_Python_Date - Fatal编程技术网

在Python中,如何将此格式转换为unix时间戳?

在Python中,如何将此格式转换为unix时间戳?,python,date,Python,Date,如果我将这样的格式作为字符串,如何将其转换为unix时间戳 注意:我从Twitter的API中获得了以下格式: datetime.strtime() 参考:最好的选择是使用dateutil.parser.parse(),它为您提供一个带有正确时区信息的datetime对象: Mon Jul 09 09:20:28 +0000 2012 现在您只需要将其转换为UNIX时间戳: >>> import dateutil.parser >>> dt = dateut

如果我将这样的格式作为字符串,如何将其转换为unix时间戳

注意:我从Twitter的API中获得了以下格式:

datetime.strtime()


参考

最好的选择是使用
dateutil.parser.parse()
,它为您提供一个带有正确时区信息的
datetime
对象:

Mon Jul 09 09:20:28 +0000 2012
现在您只需要将其转换为UNIX时间戳:

>>> import dateutil.parser
>>> dt = dateutil.parser.parse('Mon Jul 09 09:20:28 +0200 2012')
>>> dt
datetime.datetime(2012, 7, 9, 9, 20, 28, tzinfo=tzoffset(None, 7200))

您的格式也可以通过以下方式轻松解析:

这实际上就是Python 3.3中的
email.utils.parsedate\u to_datetime
的实现方式(如果您想将其复制并粘贴到项目中,请使用
email.utils
中的
parsedate\u tz
替换为
parsedate\u tz
):


如果已知时区始终为+0000,则可以使用:

def parsedate_to_datetime(data):
    if not data:
        return None
    *dtuple, tz = __parsedate_tz(data)
    if tz is None:
        return datetime.datetime(*dtuple[:6])
    return datetime.datetime(*dtuple[:6],
            tzinfo=datetime.timezone(datetime.timedelta(seconds=tz)))
这将返回一个日期时间结构。如果需要unix秒数,请运行time.mktime(),如下所示:

time.strptime('Mon Jul 09 09:20:28 +0000 2012', '%a %b %d %H:%M:%S +0000 %Y')

或者time.gmtime(),如果时区确实始终是UTC。

您需要对其进行解析:请看这个@Blender:OP的格式似乎很复杂。对于
+0000
他需要
%z
,但这会导致
ValueError:“z”是格式为“%a%b%d%H:%M:%S%z%Y”的错误指令。
为什么API创建者不能坚持ISO 8601?>@ThiefMaster,它看起来像是使用Python3.2(至少是可移植Python)工作的。显然,这取决于您的C的底层实现:那么,为什么不包括一些实际解析他使用的格式而不出错的示例代码呢?然后您需要转换为unix时间戳。。。见@thiefmaster。。。我认为霍普的回答足以让他达到他想要的目的,也足以让他为其他人找到答案formats@JoranBeasley字体见我对这个问题的评论。他的格式显然不是那么容易解析的。如果他删除偏移量(使用regex、splits或replace或其他方法)并在末尾添加它(或者完全忽略它……特别是当它总是+0000时)
def parsedate_to_datetime(data):
    if not data:
        return None
    *dtuple, tz = __parsedate_tz(data)
    if tz is None:
        return datetime.datetime(*dtuple[:6])
    return datetime.datetime(*dtuple[:6],
            tzinfo=datetime.timezone(datetime.timedelta(seconds=tz)))
time.strptime('Mon Jul 09 09:20:28 +0000 2012', '%a %b %d %H:%M:%S +0000 %Y')
>>> time.mktime(time.strptime('Mon Jul 09 09:20:28 +0000 2012', '%a %b %d %H:%M:%S +0000 %Y'))
1341818428.0