Смещение 19 часов при установке момента на 0 (с использованием moment.js)

Решил свою проблему. Я хотел преобразовать секунды в HH: mm: ss с помощью moment.js. Я использовал следующий код, который работал, но я не знал, почему момент (0) устанавливал время дня на 19 00

var yearZero = moment(0).subtract('hours',19); //beginning of time
var sTimecode = yearZero.add('seconds', secondsUntilEvent).format("HH:mm:ss");

Из http://momentjs.com/docs/#/parsing/unix-offset/ < / а>

moment(Number);
Similar to new Date(Number), you can create a moment by passing an integer value representing the number of milliseconds since the Unix Epoch (Jan 1 1970 12AM UTC).

Ничего не видел, чтобы начать там в 19:00 / 19:00.

Проблема заключалась в том, что я выводил его без объявления UTC. Следующее изменение помогло:

var sTimecode = moment(0).add('seconds', secondsUntilEvent).utc().format("HH:mm:ss");

Возможно, кто-то еще столкнулся с такой же проблемой (или нет). Добрый день!


person Jesse Adam    schedule 25.04.2013    source источник


Ответы (1)


Вместо того, чтобы делать такой сложный обходной путь, вы всегда можете использовать конструктор момента для чтения целого числа, которое интерпретируется как количество миллисекунд от эпохи unix. У меня это отлично работает:

var value = moment(18000 * 1000).format('HH:mm:ss'); // 5 Hours

document.getElementById('date').innerHTML = value;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
<pre id="date"></pre>

Очевидно, время отображается в соответствии с часовым поясом вашего браузера.

person Alekos Filini    schedule 25.08.2015