2016-10-05 7 views
0

У нас есть куча системных событий, которые хранятся в базе данных с миллисекундной меткой времени в UTC. Для того, чтобы я получить JSON мне нужно, мне просто нужно отправить запрос, как это .... http://xxx.xxx.xxx/gimmeJson?starttime=MILLISECONDS&endtime=MILLISECONDSПреобразование UTC миллисекунд в центральное время в javascript

Так что, когда это событие произошло в 11:00 вечера КНТ он был преобразован в UTC миллисекунды эквивалента и сохраняются.

У меня большая проблема, обертывающая мою голову вокруг миллисекунд, потому что я думаю об этом как о часовых поясах.

Я видел такой же вопрос, как и здесь: How do I convert UTC/ GMT datetime to CST in Javascript? (not local, CST always), и это было близко, но не совсем там.

Если временные метки хранятся в миллисекундах UTC, как я могу запросить их для их эквивалента по времени в среднем? Под этим я подразумеваю, что мой босс хочет получить отчет обо всех событиях, которые произошли в центральном часовом поясе, но я должен запросить базу данных, в которой эти временные метки хранятся как миллисекунды UTC.

В конечном счете, я должен придумать ** некоторый ** номер для отправки по URL-адресу для UTC MILLISECONDS, что эквивалентно, например, «24 сентября, 12:00:00 по центральному». Что объединяет эту проблему, так это то, что веб-сервис является довольно новым и, как было показано, немного ошибочно, поэтому мне нужно убедиться, что я прав.

// construct a moment object with Central time input 
var m = moment('2015-01-01 00:00:00').format('x'); 

// convert using the TZDB identifier for GMT 
m.tz('Europe/London'); 

// format output however you desire 
var s = m.format("x"); 

Может кто-нибудь подтвердить, что я на правильном пути? Многие, большое спасибо заранее.

ответ

2

В UTC или в любом другом часовом поясе нет отметки времени в миллисекундах. Временные метки миллисекунды всегда от 1970-01-01T00:00:00.000Z; они являются агностиками зоны.

Для того, чтобы получить временную метку для зоны вы хотите, просто создать экземпляр Date и использовать метод Date.prototype.getTime

var cstTime = new Date('2016-09-24T12:00:00-06:00'); 
 
console.log('CST in ISO 8601:', cstTime.toISOString()); 
 
console.log('CST timestamp:', cstTime.getTime()); 
 

 
var localTime = new Date(); 
 
console.log('Local time in ISO 8601:', localTime.toISOString()); 
 
console.log('Local timestamp:', localTime.getTime());