我正在编写一个与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。
谢谢,
亚历
答案 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日期库,提供此功能以及更多功能。