Я запрашиваю данные из Facebook Insights API с детализацией, установленной на один день, давайте возьмем в качестве примера пример. Мой запрос идет к: PAGEID/insights/page_fan_adds_unique/day
Как правильно преобразовать временную метку end_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
значения, возвращаемые Facebook являются временные метки для PST полуночи в конце дня в вопросе. Таким образом, строка с меткой времени 2014-08-31T07:00:00+0000
фактически показывает данные для 2014-08-30 (что составляет consistent with Facebook Insights charts).
Что я хочу сделать, это преобразовать метку времени для каждой строки данных в соответствующую дату. Мой сервер находится в CET, поэтому самым легким для меня было бы просто вычесть 10 часов с отметки времени, возвращенной FB (так что у меня 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 для этого?
Вы правы, это PDT, а не PST. Все это смешно для меня. Тем не менее, чтобы получить правильную дату, мне нужно будет вычесть еще один час (или минуту или что-то еще), потому что 'zone (7)' дает мне полночь, что технически на следующий день. – jkondratowicz
Да, с 00:00 представляет полночь в начале дня, тогда, если вам понадобится предыдущий день для вашей цели. Хороший улов. Я бы просто вычитал день с '.subtract (1, 'day')' –