2014-09-02 6 views
1

세분화 된 페이스 북 통계 API에서 데이터를 요청하고 있습니다. 예를 들어 좋아하는 것을 예로 들어 보겠습니다. PAGEID/insights/page_fan_adds_unique/dayend_time 타임 스탬프를 날짜로 올바르게 변환하는 방법

응답은 다음과 같습니다 : 내 요청에 간다

{ 
    "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)" 
    } 
    ] 
} 

문제는 페이스 북에 의해 반환 된 end_time 값이 태평양 표준시 자정에 대한 타임 스탬프가 문제의 하루의 끝에 있다는 것입니다. 따라서 타임 스탬프가 2014-08-31T07:00:00+0000 인 행은 실제로 2014-08-30 (즉 consistent with Facebook Insights charts)에 대한 데이터를 표시합니다.

내가 원하는 것은 각 데이터 행의 타임 스탬프를 적절한 날짜로 변환하는 것입니다. 내 서버가 CET에 있기 때문에 가장 쉬운 방법은 FB에서 반환 한 타임 스탬프에서 10 시간을 뺀 것입니다. (그래서 23 시가 내 타임 존에 있음) 거기에 제가 가지고 있지만 분명히 좋은 해결책은 아닙니다. .

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를 올바르게 활용하려면 어떻게해야합니까?

답변

1

실제로 UTC-7은 태평양 일광 절약 시간 (PDT)입니다. 태평양 표준시 (PST)는 UTC-8입니다.

그러나 Facebook Insights documentation를 읽고, 자주 묻는 질문에 말한다

:

모든 일일, 주간 및 월간 통계 데이터는 PDT (태평양 일광 절약 시간)에 따라 집계됩니다.

PDT가 적용되지 않는 경우에도 -7이 일년 내내 사용된다는 것을 의미하므로 조금 이상합니다. 이봐 요, 그것이 문서에 있다면 페이스 북에 이유가 있다고 생각합니다.

다행히도이 순간을 쉽게 보상 할 수 있습니다.

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

이 작업의 경우 서버 또는 클라이언트의 표준 시간대는 중요하지 않습니다.

+0

맞아요, 태평양 표준시가 아니라 태평양 표준시입니다. 모든 것이 나에게 혼란스러워. 여전히 올바른 날짜를 얻으려면'zone (7) '이 기술적으로 다음 날인 자정을 주므로 한 시간 (또는 몇 분 또는 그 이상)을 빼야합니다. – jkondratowicz

+0

예, 00:00는 하루가 시작되는 날의 자정을 나타내므로 목적에 맞는 전날이 필요할 경우입니다. 좋은 캐치. 나는 하루를'.subtract (1, 'day')' –

관련 문제