Jquery - Получить время в формате ЧЧ: ММ между двумя датами. - PullRequest
6 голосов
/ 17 января 2012

Я получаю значения из двух текстовых полей в виде даты

var start_actual_time = $("#startPoint_complete_date").val();
var end_actual_time = $("#endPoint_complete_date").val();

, что дает значение

start_actual_time  =  01/17/2012 11:20
end_actual_time    =  01/18/2012 12:20

Теперь я хочу узнать продолжительность в формате ЧЧ: ММ между этимидве даты (в данном случае 25:00), как я могу это сделать ...

Ответы [ 6 ]

12 голосов
/ 17 января 2012
var start_actual_time  =  "01/17/2012 11:20";
var end_actual_time    =  "01/18/2012 12:25";

start_actual_time = new Date(start_actual_time);
end_actual_time = new Date(end_actual_time);

var diff = end_actual_time - start_actual_time;

var diffSeconds = diff/1000;
var HH = Math.floor(diffSeconds/3600);
var MM = Math.floor(diffSeconds%3600)/60;

var formatted = ((HH < 10)?("0" + HH):HH) + ":" + ((MM < 10)?("0" + MM):MM)
alert(formatted);

См. Демонстрацию: http://jsfiddle.net/diode/nuv7t/5/ (изменить mootools в jsfiddle или открыть http://jsfiddle.net/nuv7t/564/)

1 голос
/ 17 января 2012

Рабочий пример:

выдает предупреждающее сообщение как 6: 30

$(function(){
    var startdate=new Date("01/17/2012 11:20");
    var enddate=new Date("01/18/2012 12:20");
    var diff = new Date(enddate - startdate);   
    alert(diff.getHours()+":"+diff.getMinutes());
});
0 голосов
/ 17 января 2012
start_date.setTime(Date.parse(start_actual_time));
end_date.setTime(Date.parse(end_actual_time));

//for check
start_date.toUTCString()
end_date.toUTCString()

/**
 * Different in seconds
 * @var diff int
 */

var diff = (end_date.getTime()-start_date.getTime())/1000;
0 голосов
/ 17 января 2012

здесь вы идете:

function get_time_difference(start,end)
{               
    start = new Date(start);
    end = new Date(end);
    var diff = end.getTime() - start.getTime();                 
    var time_difference = new Object();

    time_difference.hours = Math.floor(diff/1000/60/60);        
    diff -= time_difference.hours*1000*60*60;
    if(time_difference.hours < 10) time_difference.hours = "0" + time_difference.hours;

    time_difference.minutes = Math.floor(diff/1000/60);     
    diff -= time_difference.minutes*1000*60;    
    if(time_difference.minutes < 10) time_difference.minutes = "0" + time_difference.minutes;                                  

    return time_difference;              
}

var time_difference = get_time_difference("01/17/2012 11:20", "01/18/2012 12:20");

alert(time_difference.hours + ":" + time_difference.minutes);
0 голосов
/ 17 января 2012

Я сделал что-то похожее в блоге, чтобы увидеть, как долго я вместе с моим gf: P http://daystogether.blogspot.com/, и вот как я это сделал:

// *****Set the unit values in milliseconds.*****

var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;

// *****Setting dates*****

var today = new Date();
var startDate = new Date('10/27/2011 11:00:00');

// *****Calculate time elapsed, in MS*****
var interval = today.getTime() - startDate.getTime();

var days = Math.floor(interval / msecPerDay );
interval = interval - (days * msecPerDay );

var weeks = 0;
while(days >= 7)
{
days = days - 7;
weeks = weeks + 1;
}

var months = 0;
while(weeks >= 4)
{
weeks = weeks - 4;
months = months + 1;
}


// Calculate the hours, minutes, and seconds.
var hours = Math.floor(interval / msecPerHour );
interval = interval - (hours * msecPerHour );

var minutes = Math.floor(interval / msecPerMinute );
interval = interval - (minutes * msecPerMinute );

var seconds = Math.floor(interval / 1000 );

Кстати, это всего лишь javascript,нет jquery;)

0 голосов
/ 17 января 2012

Во-первых, я рекомендую это: http://www.mattkruse.com/javascript/date/, чтобы преобразовать строку в объект даты, но вы можете преобразовать ее любым удобным для вас способом.После преобразования вы можете сделать это:

var difference_datetime = end_datetime.getTime() - start_datetime.getTime()

Функция getTime() получает количество миллисекунд с 1970/01/01 года.Теперь у вас есть разница в миллисекундах, и вы можете делать все, что хотите, чтобы преобразовать в более высокие числа (например, разделите на 1000 для секунд, разделите на 60 для минут, разделите на 60 для часов и т. Д.)

...