【问题标题】:Timestamp conversion is off by an hour时间戳转换关闭了一个小时
【发布时间】:2009-06-17 22:22:35
【问题描述】:

我正在尝试在 django 中解析 twitter 提要,但在转换发布时间时遇到了一个奇怪的问题:

我已经正确地将提要中的时间转换为完整的 9 元组:

>> print tweet_time
time.struct_time(tm_year=2009, tm_mon=6, tm_mday=17, tm_hour=14, tm_min=35, tm_sec=28, tm_wday=2, tm_yday=168, tm_isdst=0)

但是当我这样称呼时:

tweet_time = datetime.fromtimestamp(time.mktime(tweet_time))

我最终得到了提前 1 小时的时间:

>> print tweet_time
2009-06-17 15:35:28

我在这里错过了什么?

【问题讨论】:

    标签: python django datetime time


    【解决方案1】:

    尝试将 isdst(夏令时标志)翻转为 -1,看看是否可以解决问题。 -1 告诉它使用(猜测)本地夏令时设置并随之滚动。

    【讨论】:

    • 您的建议是正确的,尽管一些提示如何做到这一点会有所帮助。工作代码是这样的:tweet_time = datetime.fromtimestamp(time.mktime(tweet_time[0:8] + (-1,))) 一个坏 DST 标志的所有麻烦。 Grr.
    • 这提醒您应该在内部使用UTC并将其转换为本地时间仅用于输出(如显示)。 Pytz 来救援。
    • @zgoda 很想看到一个干净的例子来说明如何做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多