12 ответов:
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10') > true1 января-это произвольная дата, ничего не значит.
Как Феликс Клинг сказал в комментариях, при условии, что ваше время основано на 24-часовых часах (и они должны быть, если нет AM / PM) и при условии, что они всегда находятся в формате
HH:MM:SSвы можете сделать прямое сравнение строк: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");
попробуйте этот код.
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, "")) > parseInt(startTime .replace(regExp, ""))){ alert("End time is greater"); }
попробуйте этот код для 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>
Dateобъект в JS поддерживает сравнение, установите их же дату для сравнения hh: mm:ss:new Date ('1/1/1999 ' + '10:20:45') > new Date ('1/1/1999 ' + '5:10:10') > true
вы можете легко сделать это с ниже код:
Примечание: второй аргумент в регулярном выражении - 'g', который является флагом глобального поиска. Флаг глобального поиска заставляет регулярное выражение искать шаблон по всей строке, создавая массив всех вхождений, которые он может найти, соответствующий данному шаблону.
var regex = new RegExp(':', 'g'), timeStr1 = '5:50:55', timeStr2 = '6:17:05'; if(parseInt(timeStr1.replace(regex, ''), 10) < parseInt(timeStr2.replace(regex, ''), 10)){ console.log('timeStr1 is smaller then timeStr2'); } else { console.log('timeStr2 is smaller then timeStr1'); }
мне не очень удобно с регулярными выражениями, и мой пример приводит к полю datetimepicker в формате m/d/Y h:mA. В этом юридическом примере вы должны прибыть до фактического слушания по депонированию. Я использую функцию replace для очистки дат, чтобы я мог обрабатывать их как объекты даты и сравнивать их.
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; }
я улучшил эту функцию из решения @kamil-P. Я проигнорировал сравнение секунд . Вы можете добавить логику секунд к этой функции, обратив внимание на ваше использование.
работает только для формата времени "чч:мм".
function compareTime(str1, str2){ if(str1 === str2){ return 0; } var time1 = str1.split(':'); var time2 = str2.split(':'); if(eval(time1[0]) > eval(time2[0])){ return 1; } else if(eval(time1[0]) == eval(time2[0]) && eval(time1[1]) > eval(time2[1])) { return 1; } else { return -1; } }пример
alert(compareTime('8:30','11:20'));спасибо @kamil-p
Я думаю, что вы можете поставить его так.
var a = "10:20:45"; var b = "5:10:10"; var timeA = new Date(); timeA.setHours(a.split(":")[0],a.split(":")[1],a.split(":")[2]); timeB = new Date(); timeB.setHours(b.split(":")[0],b.split(":")[1],b.split(":")[2]); var x= "B is later than A"; if(timeA>timeB) x = "A is later than B"; document.getElementById("demo").innerHTML = x;<p id="demo"></p>
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... }
Comments