2012-01-17 17 views
5

jestem coraz wartości z dwóch pól tekstowych jak dataJquery - Get czas w formacie gg: mm pomiędzy dwiema datami

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

co daje wartość

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

teraz chcę się dowiedzieć, czas trwania w formacie HH: MM między tymi dwoma datami (w tym przypadku jest to 25:00) jak to zrobić ...

+0

Sprawdź ten link http: // stackoverflow .pl/questions/2609513/jquery-calcul-day-differn CE-in-2-daktyla otaczaniem –

+0

wygląd [o] [1] i [o] [2] [1]: http://stackoverflow.com/questions/327429/whats- najlepsza metoda obliczania różnicy dat w javascript [2]: http://stackoverflow.com/questions/175554/how-to-convert-milliseconds-into-human-readable-form –

+0

nie potrzebujesz też dni? – redmoon7777

Odpowiedz

10
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); 

Zobacz demo: http://jsfiddle.net/diode/nuv7t/5/

0

Po pierwsze, polecam to: http://www.mattkruse.com/javascript/date/, aby przekonwertować ciąg na datę ob jekt, ale możesz go przekonwertować w dowolny sposób. Po przeliczeniu, można to zrobić:

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

Funkcja getTime() pobiera liczbę milisekund od 1970/01/01. Teraz masz liczbę milisekund różnicy i możesz zrobić, co chcesz, aby przekonwertować na wyższe liczby (np. Podzielić przez 1000 na sekundy, podzielić to przez 60 minut, podzielić to przez 60 godzin, itp.)

0

zrobiłem coś simular na blogu, aby zobaczyć, jak długo im razem z moją dziewczyną: P http://daystogether.blogspot.com/ i to jest, jak to zrobiłem:

// *****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); 

BTW to tylko javascript, bez jQuery;)

0

tutaj:

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
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; 
1

przykład robocza:

daje komunikat alertu jako 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()); 
}); 
Powiązane problemy