2013-12-16 6 views
2

У меня есть два раза, скажем:разница между двумя временами в формате (чч: мм: сс)

t1= '05:34:01' ; 
t2= '20:44:44' ; 

Я хочу, чтобы две оценки разницы между этими двумя раз в том же формате. Как и результат выше, должно быть указано как

t3= t2 - t1; // 15:10:43 

Каким образом это сделать?

+0

Этот вопрос может помочь вам: http://stackoverflow.com/questions/1968167/разница между датами-в-javascript – doptimusprime

ответ

8

Очень рекомендую включить в проект проект moment.js, если вам нужно обрабатывать время.

Пример:

var t1 = moment('05:34:01', "hh:mm:ss"); 
var t2 = moment('20:44:44', "hh:mm:ss"); 
var t3 = moment(t2.diff(t1)).format("hh:mm:ss"); 

jsFiddle Работа

Чтобы установить moment.js в Node.js, просто сделать:

npm install moment (или для глобальной установки sudo npm -g install moment)

, а затем в ваш Node.js, включите его так:

var moment = require('moment'); 

Edit: Для 24h часы, изменить hh к HH.

+0

oh..но я заметил, разница, которую я получаю, находится в 12-часовом формате. Мне действительно нужен 24-часовой формат, как я упоминал в моем вопросе. Я хочу, чтобы ответ был как 15:10:43, но он возвращается 03:10:43. Можете ли вы предложить, как получить желаемый результат. –

+0

просто используйте 'HH' вместо' hh' –

+0

@brandonscript, я получаю значение «12: 10: 43», когда я запускаю скрипку (JFYI, я в Токио). Это что-то связано с UTC? Если да, то как мы можем это разрешить? Пожалуйста, предложите. – VicJordan

4

Я хотел бы также пойти с moment.js, но вы могли бы сделать:

function time_diff(t1, t2) { 
    var parts = t1.split(':'); 
    var d1 = new Date(0, 0, 0, parts[0], parts[1], parts[2]); 
    parts = t2.split(':'); 
    var d2 = new Date(new Date(0, 0, 0, parts[0], parts[1], parts[2]) - d1); 
    // this would also work 
    // d2.toTimeString().substr(0, d2.toTimeString().indexOf(' ')); 
    return (d2.getHours() + ':' + d2.getMinutes() + ':' + d2.getSeconds()); 
} 
1

попробовать это

function time_diff(t1, t2) 
{ 
    var t1parts = t1.split(':');  
    var t1cm=Number(t1parts[0])*60+Number(t1parts[1]); 

    var t2parts = t2.split(':');  
    var t2cm=Number(t2parts[0])*60+Number(t2parts[1]); 

    var hour =Math.floor((t1cm-t2cm)/60);  
    var min=Math.floor((t1cm-t2cm)%60);  
    return (hour+':'+min+':00'); 
} 

time_diff("02:23:00","00:45:00") 
0

Я также использовал momentjs, но с duration и получил правильно различались раз:

var t1 = moment('05:34:01', "HH:mm:ss"); 
var t2 = moment('20:44:44', "HH:mm:ss"); 

var start_date = moment(t1, 'YYYY-MM-DD HH:mm:ss'); 
var end_date = moment(t2, 'YYYY-MM-DD HH:mm:ss'); 
var duration = moment.duration(end_date.diff(t1)); 

var t3 = duration.hours() + ":" + duration.minutes() + ":" + duration.seconds(); 
alert(t3); 
console.log(duration.hours()); 
console.log(duration.minutes()); 
console.log(duration.seconds()); 
Смежные вопросы