Python将带有时区偏移的日期/时间字符串转换

4

我有一个类似于Fri Aug 03 15:16:37 +0000 2012的东西,我想把它转换成03-08-2012

我还有一些Unix时间戳,例如1344006622,这里我只需要执行以下操作:

datetime.datetime.fromtimestamp(1344006622).strftime('%d-%m-%Y')

但这仅适用于Unix时间戳。我如何转换第一个时间格式?


你使用的是哪个版本的Python? - Víctor M
我正在使用Python 2.7。 - Patrick Weiß
1个回答

8

使用Python 2和dateutil

据我所知,Python 2只提供了一个用于时区名称的%Z(大写Z),但是您拥有一个偏移量(+0000)。不过有一个名为dateutil的库可以帮助您:

>>> import dateutil
>>> import dateutil.parser
>>> dateutil.parser.parse('Fri Aug 03 15:16:37 +0000 2012')
datetime.datetime(2012, 8, 3, 15, 16, 37, tzinfo=tzutc())

在上面的例子中,我使用了Python 2.7.9和dateutil 2.4.2。 您可以通过以下方式检查您的版本:
>>> dateutil.__version__
'2.4.2'

你可以使用 pip install python-dateutil 进行安装,如果你想指定版本,可以使用 pip install python-dateutil==2.4.2

Python 3

自从 Python 3.2 版本起,引入了 %z 来解析时区信息 +0000
>>> from datetime import datetime
>>> datetime.strptime('Fri Aug 03 15:16:37 +0000 2012', '%a %b %d %H:%M:%S %z %Y')
datetime.datetime(2012, 8, 3, 15, 16, 37, tzinfo=datetime.timezone.utc)

如需参数的解释,请参考此表格


谢谢。由于我正在使用Python 2.7,您还有什么进一步的想法吗? - Patrick Weiß
这对我来说完成了任务。非常感谢你 ;) - Patrick Weiß

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接