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;