2015-02-03 2 views
1

У меня есть длительность в миллисекундах, и я хотел бы, чтобы отобразить его в формате чч: мм: сс, так что я пытался использоватьПреобразовать миллисекунды чч: мм: сс с JS добавляет 1 час

var dtFromMillisec = new Date(myDuration); 
var result = dtFromMillisec.getHours() + ":" + dtFromMillisec.getMinutes() + ":" + dtFromMillisec.getSeconds(); 

Время, которое я получаю, должно быть, например, 00:00:15, но это 1: 0: 15, почему я всегда получаю еще 1 час?

+0

Можете ли вы показать свой ввод и вывод? Что такое 'myDuration'? – Jivings

+0

Работа с текущей датой работает нормально, поэтому, возможно, это что-то с вашим вводом: http://jsfiddle.net/r7qqr85g/ –

ответ

1

Если вы работаете с длительностями, не используйте Date объект, сделать это следующим образом:

var result = Math.floor(myDuration/(1000*60*60)) + ":" + Math.floor(myDuration/(1000*60))%60 + ":" + Math.floor(myDuration/1000)%60; 

Это Date конструктор предназначен для использования, когда у вас есть дата, которая может быть представлена ​​в миллисекундах которые прошли с 01 января 1970 года по UTC.

Редактировать

Ваш Date объект, вероятно, показывает 1 час, потому что вы находитесь в часовом поясе с GMT + 1, при этом дата на миллисекунду нулевой является 01 January, 1970 UTC 01:00:00.

+0

Ну для myDuration = 9702 i get result = 0.002695: 0.1617: 9.702:/ – Lempkin

+0

Добавить 'Math.Round' тогда. За 9702 миллисекунды вы должны получить 10 секунд, что верно. – Joanvo