Python:datetime格式

Python:datetime格式,python,python-2.7,datetime,formatting,Python,Python 2.7,Datetime,Formatting,我有以下日期时间字符串: Mon Oct 27 23:00:03 +0000 2014 我想将这个字符串转换成一个可以比较日期时间的表单。因此,我尝试的第一件事是在Python中将其转换为datetime 我的格式有问题。我遵循了,但它不起作用 我尝试了以下方法: str = 'Mon Oct 27 23:00:03 +0000 2014' datetime.strptime(str, '%a %b %d %X %Z %Y') 如何使其工作?如果要将其转换为datetime对象,可以使用库

我有以下日期时间字符串:

Mon Oct 27 23:00:03 +0000 2014
我想将这个字符串转换成一个可以比较日期时间的表单。因此,我尝试的第一件事是在Python中将其转换为
datetime

我的格式有问题。我遵循了,但它不起作用

我尝试了以下方法:

str = 'Mon Oct 27 23:00:03 +0000 2014'
datetime.strptime(str, '%a %b %d %X %Z %Y')

如何使其工作?

如果要将其转换为
datetime
对象,可以使用库

例如:

In [6]: dateutil.parser.parse('Mon Oct 27 23:00:03 +0000 2014')
Out[6]: datetime.datetime(2014, 10, 27, 23, 0, 3, tzinfo=tzutc())
在Python 3.2+中:

>>> from datetime import datetime
>>> timestr = 'Mon Oct 27 23:00:03 +0000 2014'
>>> datetime.strptime(timestr, '%a %b %d %X %z %Y')
datetime.datetime(2014, 10, 27, 23, 0, 3, tzinfo=datetime.timezone.utc)

请注意小写的%z。

您的问题在于
%z
UTC偏移值(您应该使用小写的z)。但是,

%z
仅在Python 3.2中受支持+


如果您使用的是较旧版本的Python,那么您可以从字符串中取出UTC偏移量,并在转换其余部分后尝试转换它。这里有一个仅适用于Python 2和3的stdlib版本:

#!/usr/bin/env python
from datetime import datetime
from email.utils import parsedate_tz, mktime_tz

timestamp = mktime_tz(parsedate_tz('Mon Oct 27 23:00:03 +0000 2014'))
utc_dt = datetime.utcfromtimestamp(timestamp)
# -> datetime.datetime(2014, 10, 27, 23, 0, 3)
其中
utc_dt
是一个datetime对象,表示utc时区中的时间(无论输入时区如何)

注意:它不支持表示闰秒的时间(尽管
datetime
object无论如何也不能表示它):


这将返回以下错误:
ValueError:“z”是错误的指令,格式为“%a%b%d%X%z%Y”
您使用的是哪个Python版本?它适合我(Python3.4.3),我使用Python2.7相关:不相关:不要使用
str
作为名称。它是Python内置的阴影。@J.F.Sebastian是的,我知道,但它只是一个例子。在我的代码中,我不使用str作为变量名。
>>> datetime.utcfromtimestamp(mktime_tz(parsedate_tz('Tue June 30 23:59:60 +0000 2015')))
datetime.datetime(2015, 7, 1, 0, 0)