【问题标题】:How to properly convert end_time timestamp into date如何正确地将 end_time 时间戳转换为日期
【发布时间】:2014-09-02 14:02:12
【问题描述】:

我从 Facebook Insights API 请求数据,粒度设置为一天,我们以点赞为例。我的请求是: PAGEID/insights/page_fan_adds_unique/day

响应如下所示:

{
  "data": [
    {
      "id": "PAGEID/insights/page_fan_adds_unique/day",
      "name": "page_fan_adds_unique",
      "period": "day",
      "values": [
        {
          "value": 3,
          "end_time": "2014-08-29T07:00:00+0000"
        },
        {
          "value": 4,
          "end_time": "2014-08-30T07:00:00+0000"
        },
        {
          "value": 1,
          "end_time": "2014-08-31T07:00:00+0000"
        }
      ],
      "title": "Daily New Likes",
      "description": "Daily: The number of new people who have liked your Page (Unique Users)"
    }
  ]
}

问题在于 Facebook 返回的 end_time 值是相关日期结束时 PST 午夜的时间戳。所以时间戳为2014-08-31T07:00:00+0000 的行实际上显示了2014-08-30(即consistent with Facebook Insights charts)的数据。

我想要做的是将每个数据行的时间戳转换为正确的日期。我的服务器在 CET 中,所以对我来说最简单的事情就是直接从 FB 返回的时间戳中减去 10 小时(所以我的时区有 23:00),我有它,但这显然不是一个好的解决方案.

for(var i=0,j=rows.length;i<j;i++) {
    time = rows[i].end_time;
    date = moment(time).subtract("hours", 10).format("YYYY-MM-DD");
}

如何正确利用 Moment.js 来做到这一点?

【问题讨论】:

    标签: javascript facebook timezone momentjs facebook-insights


    【解决方案1】:

    实际上,UTC-7 是太平洋夏令时 (PDT)。太平洋标准时间 (PST) 为 UTC-8。

    但是阅读Facebook Insights documentation,在常见问题解答中它说:

    所有每日、每周和每月的 Insights 数据均根据 PDT(太平洋夏令时间)汇总。

    这有点奇怪,因为这意味着 -7 全年使用,即使 PDT 未生效。但是,嘿,如果这是文档中的内容,那么我猜 Facebook 有他们的原因。

    幸运的是,这很容易用时刻来弥补。

    date = moment(time).zone(7).format("YYYY-MM-DD");
    

    对于此操作,您的服务器或客户端的时区无关紧要。

    【讨论】:

    • 你是对的,它是 PDT,而不是 PST。这一切都让我非常困惑。不过,为了得到正确的日期,我需要再减去一个小时(或分钟或其他什么),因为zone(7) 给了我午夜,从技术上讲是第二天。
    • 是的,因为 00:00 代表一天开始的午夜,那么如果您需要前一天来实现您的目的。接得好。我会用.subtract(1, 'day') 减去一天
    • 链接失效了。当我谷歌site:developers.facebook.com "Pacific daylight time" 时,我没有得到任何结果。我想知道 Facebook 现在是如何处理时区的。我找到了 developers.facebook.com/docs/marketing-api/insights/breakdowns ,但它没有指定。
    猜你喜欢
    • 2018-09-03
    • 2021-12-27
    • 2021-07-18
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2012-04-10
    相关资源
    最近更新 更多