显示Facebook评论created_time喜欢2小时前,4周前,等等

时间:2014-03-17 13:28:32

标签: facebook-graph-api timezone facebook-comments

我正在编写一个与Facebook Graph API交互的脚本。我设法阅读了评论,我想要添加的唯一内容是在“2小时前”,“4周前”等格式中显示 created_time 字段。

以下是Facebook在阅读帖子中的评论时向我显示的内容(我正在使用 https://graph.facebook.com/ {post_id} / comments?access_token = {...} 端点):

{
   "data": [
      {
         "id": "730302787001258_95568060",
         "from": {
            "name": "Johanna Eris",
            "id": "100000646300114"
         },
         "message": "my comment",
         "can_remove": true,
         "created_time": "2014-03-17T11:44:39+0000",
         "like_count": 0,
         "user_likes": false
      },
   ...
}

我不知道如何计算 created_time 。我注意到用户个人资料( / me )有一个名为 timezone 的字段,但我不确定这是否与评论时间有关。我想知道当用户从不同的时区(例如旅行时)发帖时会发生什么,他的时区是否已更新?

是的,我不是在问如何计算时差,我已经知道如何做到这一点。我只是想知道评论的时区以及如何计算,所以我可以做出正确的时差。

不确定它是否相关,但我正在使用NodeJS& fb package

谢谢,

亚历

2 个答案:

答案 0 :(得分:1)

因为该值包含+0000,您知道它已经调整为零偏移,这将使其等效于UTC。所以源时区不是必需的。

既然你说你正在使用moment.js,那么只需将整个值传递给当前构造函数,包括偏移量。它会自动读取并调整到当地时区。

moment("2014-03-17T11:44:39+0000")

如果您不想调整它,那么只需切换回UTC。

moment("2014-03-17T11:44:39+0000").utc()

使用其中之一,您可以使用moment fromNow函数来获取您正在寻找的字符串输出。如果您需要,则无需调用utc函数:

moment("2014-03-17T11:44:39+0000").fromNow()  // "2 hours ago" (or similar)

-

顺便说一句 - Z+0000之间的唯一区别是语义错误:

  • Z应该暗示该值是UTC,无论是UTC还是已转换为UTC。

  • +0000+00:00应该暗示该值来自当前时区,该时区不会偏离UTC ,例如Europe/London在冬天,或Atlantic/Reykjavik全年。

  • 如果你按照RFC3339,那么也有-00:00的可能性,这应该暗示本地值是未知的,但这个值被理解为UTC。

然而,他们都指的是同一点,我怀疑Facebook试图暗示除了你应该将价值视为UTC之外的任何事情,所以我不担心它。 ; - )

答案 1 :(得分:0)

看看Moment.js,这是一个javascript日期库,提供此功能以及更多功能。

相关问题