Ich habe zwei Zeitzeichenfolgen im Format HH: MM: SS . Zum Beispiel str1enthält 10:20:45, str2enthält 5:10:10.
Wie kann ich die oben genannten Werte vergleichen?
Ich habe zwei Zeitzeichenfolgen im Format HH: MM: SS . Zum Beispiel str1enthält 10:20:45, str2enthält 5:10:10.
Wie kann ich die oben genannten Werte vergleichen?
5:10:10ist es nicht HH:MM...nur so H:MM:.... Aber für den String-Vergleich müssen beide wirklich das gleiche Format haben.
Antworten:
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
> true
Der 1. Januar ist ein willkürliches Datum, hat nichts zu bedeuten.
Wie Felix Kling in den Kommentaren sagte, vorausgesetzt, Ihre Zeiten basieren auf einer 24-Stunden-Uhr (und sollten es sein, wenn es keine AM / PM gibt) und vorausgesetzt, sie haben immer das Format HH:MM:SS, können Sie einen direkten Zeichenfolgenvergleich durchführen:
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");
str1 = "00:10"mit str2 = "01:10"und prüfen Sie, dass , wenn der String 1 dann größer sonst String 2 Alarm string eins größer ist alert String 2 größer denken i 12.00 Reibe als 01.00 ist , aber es zeigt String 2 größer
1:10amist als 24-Stunden-Zeitformat unregelmäßig. 01:10wäre korrekter und 01:10würde richtig mit vergleichen12:10 . Wie ich bereits sagte, müssen Sie für Ihre Saiten eine andere Methode verwenden.
Probieren Sie diesen Code für das 24-Stunden-Format aus.
<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>
Sie können dies einfach mit dem folgenden Code tun:
Hinweis : Das zweite Argument in RegExp ist 'g', das globale Suchflag. Das globale Suchflag führt die RegExp-Suche nach einem Muster in der gesamten Zeichenfolge durch und erstellt ein Array aller Vorkommen, die mit dem angegebenen Muster übereinstimmen. Der folgende Code funktioniert nur, wenn die Uhrzeit im Format HH: MM: SS ist, dh im 24-Stunden-Zeitformat .
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');
}
Sie können die beiden Werte direkt nach dem Teilen mit ':' vergleichen.
Ich habe diese Funktion von der @ kamil-p-Lösung verbessert. Ich habe Sekundenvergleich ignoriert. Sie können dieser Funktion eine Sekundenlogik hinzufügen, indem Sie auf Ihre Verwendung achten.
Arbeiten Sie nur für das Zeitformat "HH: mm".
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;
}
}
Beispiel
alert(compareTime('8:30','11:20'));
Danke an @ kamil-p
Der beste Weg, um Zeiten mit der Konvertierung in ms zu vergleichen
var minutesOfDay = function(m){
return m.minutes() + m.hours() * 60;
}
return minutesOfDay(now) > minutesOfDay(end);
Konvertieren Sie diese Zeichenfolgen in Sekunden:
var str1 = '10:20:45';
var str2 = '5:10:10';
str1 = str1.split(':');
str2 = str2.split(':');
totalSeconds1 = parseInt(str1[0] * 3600 + str1[1] * 60 + str1[0]);
totalSeconds2 = parseInt(str2[0] * 3600 + str2[1] * 60 + str2[0]);
// compare them
if (totalSeconds1 > totalSeconds2 ) { // etc...
Ich bin mit regulären Ausdrücken nicht so vertraut, und mein Beispiel ergibt sich aus einem datetimepicker-Feld, das mit m / d / Y h: mA formatiert ist. In diesem Rechtsbeispiel müssen Sie vor der eigentlichen Hinterlegungsverhandlung eintreffen. Ich verwende die Ersetzungsfunktion, um die Daten zu bereinigen, damit ich sie als Datumsobjekte verarbeiten und vergleichen kann.
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;
}
Ich denke, Sie können es so ausdrücken.
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>
Setzen Sie den extrahierten Teil der Zeit auf Variablen.
// If you don't have the second part then set it to 00.
//Create date object and set the time to that
var startTimeObject = new Date();
startTimeObject.setHours(startHour, startMinute, startSecond);
//Create date object and set the time to that
var endTimeObject = new Date(startTimeObject);
endTimeObject.setHours(endHour, endMinute, endSecond);
//Now we are ready to compare both the dates
if(startTimeObject > endTimeObject) {
alert('End time should be after start time.');
}
else {
alert('Entries are perfect.');
}
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;
}
}
}
1für zurückkehren 0:0:5, 0:1:0koppeln, und das ist falsch.
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...
}