2017-08-01 38 views
1

我正在写一个将YML文件转换为我的博客(静态网站生成器)的静态HTML页面的python应用程序。我想添加一个RSS提要。在一些地方,我读了发布日期必须是:使用Python将时间从UTC转换为GMT

<pubDate>Wed, 05 Jul 2017 18:38:23 GMT</pubDate> 

但我有:

<pubDate>2017-07-05T18:38:23+00:00</pubDate> 

从Python中的datetime API为这些真正的累赘。如何把字符串2017-07-05T18:38:23+00:00转换为GMT?

谢谢先进。

+1

http://strftime.org/ –

+3

我总是用[arrow](http://arrow.readthedocs.io/en/latest/)来处理python中的日期时间,它相当容易使用 –

+0

只需写正则表达式或以某种方式在转换之前转换字符串。 –

回答

3
import datetime 
basedate="2017-07-05T18:38:23+00:00" 
formatfrom="%Y-%m-%dT%H:%M:%S+00:00" 
formatto="%a %d %b %Y, %H:%M:%S GMT" 
print datetime.datetime.strptime(basedate,formatfrom).strftime(formatto) 

将返回正确的转录:周三2017年7月5日,十八时38分23秒GMT

我对格式来源:http://strftime.org/

+0

我会使用时间模块(导入时间)而不是日期时间模块,但是,我认为要点是一样的。投票。 –

1

我使用dateutil这是一个真正强大的强烈建议对datetime的扩展。它有一个健壮的解析器,可以将日期时间的任何输入格式解析为日期时间对象。然后你可以将它重新格式化为你想要的输出格式。

这应该回答你的需要:

from dateutil import parser 

original_date = parser.parse("2017-07-05T18:38:23+00:00") 
required_date = original_date.strftime("%a %d %b %Y, %H:%M:%S GMT") 
+0

当我尝试使用代码时出现错误:“NameError:全局名称'分析器'未定义”。有东西错过了? – junihh

+0

你说得对。抱歉。我在我的答案('from dateutil import parser')中解决了导入问题。其余的保持不变 – Ori

3

而其他的答案是正确的,我总是用arrow在Python处理日期时间,这是非常容易使用。

对于您来说,您可以简单地做

import arrow 
utc = arrow.utcnow() 
local = utc.to('US/Pacific') 
local.format('YYYY-MM-DD HH:mm:ss ZZ') 

的文档包含更多的信息。