【问题标题】:Converting from PST/PDT (Facebook timestamp) to UTC从 PST/PDT(Facebook 时间戳)转换为 UTC
【发布时间】:2011-07-15 15:12:03
【问题描述】:

Facebook API(使用 FQL)为我提供基于太平洋时区的时间戳。它代表自 1970 年 1 月 1 日以来的秒数。 我位于法国,法国时间是夏季 GMT+2 和冬季 GMT+1。所有基于本地的日期时间/时间函数都很好地处理了这种“夏令时变化”。

正如您已经知道的那样,我尝试将 Facebook 返回的时间戳转换为法国时间。今天我发现 Facebook 在我的 7 月 15 日 21:00(法国时间显示在 Facebook 网站上)返回 1310788800。 Facebook 详细说明他们的时区是 PST (GMT-8h)。 1310788800 是 UTC 时间 7 月 15 日星期五 20:00,即法国的 22:00。

所以他们是一个额外的小时,这让我得出这些结论:

  • 或者facebook不是基于PST而是PDT(考虑到夏天 他们所有日期的时间魔法改变 - 这似乎不现实)
  • 或者在 Facebook 中没有考虑到法国夏令时的变化 网站和数据库
  • 两者都暗示 Facebook API 很难被人们使用 从他们的服务器和 Facebook 时间管理是用脚编码的

没关系,问题都是一样的。我希望能够在冬季和夏季转换此日期。为此,我必须将此时间视为基于 PDT 并将其转换为 UTC 时间。

你有提示使用 python 将 PDT 更改为 UTC 吗?

感谢您的帮助!

【问题讨论】:

  • “(考虑到他们所有日期的夏令时魔法变化 - 这似乎不现实)”显然你同意大多数开发人员对夏令时的看法......
  • 关于夏令时或通用时间节约的正确观点是什么?
  • “正确的观点”是面向全球受众的 API 永远不应使用本地时间,而应使用 UTC。但不要让我开始说 facebook 不能与其他人相处得很好。

标签: python facebook datetime timezone


【解决方案1】:

我必须使用pytz

from datetime import *
from pytz import timezone
import pytz

[...]

if (not isinstance(pacificTime, int)):
    pacificTime = int(pacificTime)
originalTimeZone = "America/Los_Angeles"
print datetime.fromtimestamp(pacificTime, pytz.timezone(originalTimeZone))

这个解决方案来自我之前的帖子:Changing a unix timestamp to a different timezone

希望对你有帮助

【讨论】:

    【解决方案2】:

    要在 python 中将 PDT 更改为 UTC,请使用 pytz。

    但 facebook API 似乎比这更棘手。见Facebook Events and timezones, how to convert UTC datetime to what facebook expects?

    【讨论】:

    • 谢谢,解决了:)。我的问题只是为了阅读使用 facebook 活动网站创建的活动日期。我不需要插入新事件。
    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2016-11-21
    • 2021-05-28
    • 2021-05-24
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多