【问题标题】:Convert time from UTC to GMT with Python使用 Python 将时间从 UTC 转换为 GMT
【发布时间】:2018-01-08 22:13:51
【问题描述】:

我正在为我的博客(静态站点生成器)编写一个将 YML 文件转换为静态 HTML 页面的 python 应用程序。我想添加一个 RSS 提要。在某个地方,我读到发布日期必须是:

<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?

非常感谢。

【问题讨论】:

  • 我总是用arrow在python中处理日期时间,它相当容易使用
  • 在转换之前写一个正则表达式或者以某种方式转换字符串。
  • 您可能会发现这很有帮助stackoverflow.com/questions/4770297/…
  • @SalmaanP 很好的提示和很好的参考。您可能可以使用箭头库代码 sn-p 添加答案。

标签: python datetime utc gmt


【解决方案1】:
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 日星期三,格林威治标准时间 18:38:23

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

【讨论】:

  • 我会使用时间模块(导入时间)而不是日期时间模块,但我认为要点是相同的。赞成票。
【解决方案2】:

虽然其他答案都是正确的,但我总是使用arrow 来处理python中的日期时间,它非常好用。

以你为例,你可以简单地做

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

该文档包含更多信息。

【讨论】:

    【解决方案3】:

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

    这应该可以满足您的需求:

    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")
    

    【讨论】:

    • 当我尝试使用您的代码时出现错误:“NameError:未定义全局名称'解析器'”。错过了什么?
    • 你是对的。对不起。我在我的答案(from dateutil import parser)中修复了导入。其余的保持不变
    猜你喜欢
    • 2014-10-12
    • 2010-09-15
    • 2012-05-01
    • 2015-11-09
    • 2011-07-31
    • 2023-03-26
    • 2011-10-20
    相关资源
    最近更新 更多