Jquery – 在两个日期之间以HH:MM格式获取时间

我从两个文本字段中获取值作为日期

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 

现在我想找出这两个日期之间的HH:MM格式的持续时间(在这种情况下是25:00)我该怎么办…

 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/ (在jsfiddle中更改mootools或打开http://jsfiddle.net/nuv7t/564/ )

工作范例:

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()); }); 

首先,我建议: http : //www.mattkruse.com/javascript/date/将字符串转换为日期对象,但您可以按照自己的方式进行转换。 转换后,您可以执行以下操作:

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

getTime()函数获取自1970/01/01以来的毫秒数。 现在你有几毫秒的差异,你可以做任何你想要转换为更高数字的事情(例如,除以1000除以秒,将其除以60分钟,将其除以60小时,等等)

我在博客上做了类似的事情,看看我和我的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 ); 

BTW这只是javascript,没有jquery;)

干得好:

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