Python: 日期时间格式
Python: datetime format
我有以下日期时间字符串:
Mon Oct 27 23:00:03 +0000 2014
我想将此字符串转换为可以比较日期时间的形式。所以,我尝试的第一件事是将其转换为 Python.
中的 datetime
我在正确设置格式时遇到问题。我已经关注了the documentation,但是没有用
我试过以下方法:
str = 'Mon Oct 27 23:00:03 +0000 2014'
datetime.strptime(str, '%a %b %d %X %Z %Y')
我怎样才能让它工作?
如果您想将其转换为 datetime
对象,您可以使用库 python-dateutil。
例如:
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
is only supported in Python 3.2+
如果您坚持使用旧版本的 Python,您可以从字符串中取出 UTC 偏移量,然后在转换其余部分后尝试转换它
这是适用于 Python 2 和 3 的仅标准库版本:
#!/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
是一个日期时间对象,表示 UTC 时区的时间(与输入时区无关)。
注意:它不支持代表闰秒的时间(尽管 datetime
对象无论如何也不能代表它):
>>> datetime.utcfromtimestamp(mktime_tz(parsedate_tz('Tue June 30 23:59:60 +0000 2015')))
datetime.datetime(2015, 7, 1, 0, 0)
我有以下日期时间字符串:
Mon Oct 27 23:00:03 +0000 2014
我想将此字符串转换为可以比较日期时间的形式。所以,我尝试的第一件事是将其转换为 Python.
中的datetime
我在正确设置格式时遇到问题。我已经关注了the documentation,但是没有用
我试过以下方法:
str = 'Mon Oct 27 23:00:03 +0000 2014'
datetime.strptime(str, '%a %b %d %X %Z %Y')
我怎样才能让它工作?
如果您想将其转换为 datetime
对象,您可以使用库 python-dateutil。
例如:
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
is only supported in Python 3.2+
如果您坚持使用旧版本的 Python,您可以从字符串中取出 UTC 偏移量,然后在转换其余部分后尝试转换它
这是适用于 Python 2 和 3 的仅标准库版本:
#!/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
是一个日期时间对象,表示 UTC 时区的时间(与输入时区无关)。
注意:它不支持代表闰秒的时间(尽管 datetime
对象无论如何也不能代表它):
>>> datetime.utcfromtimestamp(mktime_tz(parsedate_tz('Tue June 30 23:59:60 +0000 2015')))
datetime.datetime(2015, 7, 1, 0, 0)