如何比较HH:MM:SS格式的两个时间string?

我有两个时间stringHH:MM:SS格式。 例如, str1包含10: 10:20:45str2包含5:10:10

我怎样才能比较上述值?

 Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10') > true 

1月1日是一个随意的date,并不意味着什么。

正如Felix Kling在评论中所说,如果你的时间是基于24小时制的(如果没有上午/下午,他们应该是这样的),如果他们的格式是HH:MM:SS你可以直接进行string比较:

 var str1 = "10:20:45", str2 = "05:10:10"; if (str1 > str2) alert("Time 1 is later than time 2"); else alert("Time 2 is later than time 1"); 

试试这个24小时格式的代码。

 <script type="text/javascript"> var a="12:23:35"; var b="15:32:12"; var aa1=a.split(":"); var aa2=b.split(":"); var d1=new Date(parseInt("2001",10),(parseInt("01",10))-1,parseInt("01",10),parseInt(aa1[0],10),parseInt(aa1[1],10),parseInt(aa1[2],10)); var d2=new Date(parseInt("2001",10),(parseInt("01",10))-1,parseInt("01",10),parseInt(aa2[0],10),parseInt(aa2[1],10),parseInt(aa2[2],10)); var dd1=d1.valueOf(); var dd2=d2.valueOf(); if(dd1<dd2) {alert("b is greater");} else alert("a is greater"); } </script> 

试试这个代码。

 var startTime = "05:01:20"; var endTime = "09:00:00"; var regExp = /(\d{1,2})\:(\d{1,2})\:(\d{1,2})/; if(parseInt(endTime .replace(regExp, "$1$2$3")) > parseInt(startTime .replace(regExp, "$1$2$3"))){ alert("End time is greater"); } 

你可以用“:”来分割这两个值。

我不太习惯正则expression式,而我的示例结果是格式为m / d / Y h:mA的datetimepicker字段。 在这个法律例子中,你必须在实际的证词听证会之前到达。 我使用replace函数来清理date,以便我可以将它们作为Date对象处理并进行比较。

 function compareDateTimes() { //date format ex "04/20/2017 01:30PM" //the problem is that this format results in Invalid Date //var d0 = new Date("04/20/2017 01:30PM"); => Invalid Date var start_date = $(".letter #depo_arrival_time").val(); var end_date = $(".letter #depo_dateandtime").val(); if (start_date=="" || end_date=="") { return; } //break it up for processing var d1 = stringToDate(start_date); var d2 = stringToDate(end_date); var diff = d2.getTime() - d1.getTime(); if (diff < 0) { end_date = moment(d2).format("MM/DD/YYYY hh:mA"); $(".letter #depo_arrival_time").val(end_date); } } function stringToDate(the_date) { var arrDate = the_date.split(" "); var the_date = arrDate[0]; var the_time = arrDate[1]; var arrTime = the_time.split(":"); var blnPM = (arrTime[1].indexOf("PM") > -1); //first fix the hour if (blnPM) { if (arrTime[0].indexOf("0")==0) { var clean_hour = arrTime[0].substr(1,1); arrTime[0] = Number(clean_hour) + 12; } arrTime[1] = arrTime[1].replace("PM", ":00"); } else { arrTime[1] = arrTime[1].replace("AM", ":00"); } var date_object = new Date(the_date); //now replace the time date_object = String(date_object).replace("00:00:00", arrTime.join(":")); date_object = new Date(date_object); return date_object; } 
 var str1 = "150:05:05", var str2 = "80:04:59"; function compareTime(str1, str2){ if(str1 === str2){ return 0; } var time1 = str1.split(':'); var time2 = str2.split(':'); for (var i = 0; i < time1.length; i++) { if(time1[i] > time2[i]){ return 1; } else if(time1[i] < time2[i]) { return -1; } } } 
 var startTime = getTime(document.getElementById('startTime').value); var endTime = getTime(document.getElementById('endTime').value); var sts = startTime.split(":"); var ets = endTime.split(":"); var stMin = (parseInt(sts[0]) * 60 + parseInt(sts[1])); var etMin = (parseInt(ets[0]) * 60 + parseInt(ets[1])); if( etMin > stMin) { // do your stuff... }