如何转换 Facebook“消息”对象的时间戳

pat*_*ick 4 python datetime timestamp facebook-messenger facebook-messenger-bot

如果事实证明这是一个非常愚蠢的问题,我深表歉意。我正在通过 Facebook Messenger API读取消息对象,使用 Python 中的 Flask。

我首先在 JSON 对象中读取后提取时间戳

# read the JSON from Flask "request" object    
input_json = request.get_json() 
# extract the timestamp
ts = input_json["entry"][0]["messaging"][0]["timestamp"]
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用datetime( docs )将结果转换为人类可读的日期格式,认为这是一个 Unix 时间戳,但它返回一个ValueError: year is out of range

import datetime
datetime.datetime.fromtimestamp(int(ts)))
Run Code Online (Sandbox Code Playgroud)

现在结果是特定消息的时间戳为1504129573859,这是将来的,当我在这里检查时。

当我向它提供文档中给出的时间戳(上面的链接)时会发生同样的错误,即1458692752478,所以我认为这不是我的输入解析问题。我在此处或 FB 文档上找不到任何有关此内容的信息,非常感谢您的帮助!

  • 这是哪种时间格式,如何将其转换为datetime对象?

  • 还是我的方法/想法有问题?

lsv*_*lsv 8

您可以首先将 fb 的时间戳转换为 python 时间戳:

import datetime
datetime.datetime.fromtimestamp(ts/1000.0)
Run Code Online (Sandbox Code Playgroud)

  • 无需将其转换为 int - 您会失去精度。在 Py2 中使用 `ts/1000.0`(或 `from __future__ import Division`) (2认同)