HH : MM : SS 형식의 두 시간 문자열이 있습니다. 예를 들어 str1포함 10:20:45, str2포함 5:10:10.
위의 값을 어떻게 비교할 수 있습니까?
HH : MM : SS 형식의 두 시간 문자열이 있습니다. 예를 들어 str1포함 10:20:45, str2포함 5:10:10.
위의 값을 어떻게 비교할 수 있습니까?
5:10:10하지 않습니다 HH:MM...만입니다 H:MM:.... 그러나 문자열 비교를 위해서는 둘 다 같은 형식이어야합니다.
답변:
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
> true
1 월 1 일은 임의의 날짜이며 아무 의미가 없습니다.
Date.parse브라우저의 차이와 불일치로 인해 문자열을 구문 분석하는 것은 권장하지 않습니다. MDN
로 펠릭스 클링이 코멘트에 말했다, 당신의 시간은 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");
str1 = "00:10"을 비교 str2 = "01:10"하고 문자열 1이 문자열 2보다 크면 문자열 2 경고 문자열 문자열 1이 더 큰지 확인합니다. 그렇지 않으면 경고 문자열 2가 더 크다고 생각합니다. 12PM이 오전 1 시보 다 강하다고 생각하지만 문자열 2가 더 큽니다
1:10am24 시간 형식으로 불규칙합니다. 01:10더 정확한 것와 01:10제대로 비교하는 것입니다 12:10. 내가 말했듯이 문자열에 대해 다른 방법을 사용해야합니다.
이 코드를 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>
아래 코드로 쉽게 할 수 있습니다.
참고 : RegExp의 두 번째 인수는 전역 검색 플래그 인 'g'입니다. 전역 검색 플래그는 RegExp가 문자열 전체에서 패턴을 검색하도록하여 주어진 패턴과 일치하는 모든 항목의 배열을 만듭니다. 아래 코드는 시간이 HH : MM : SS 형식, 즉 24 시간 형식 인 경우에만 작동합니다 .
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');
}
해당 문자열을 초로 변환하십시오.
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...
@ kamil-p 솔루션에서이 기능을 개선했습니다. 나는 초 비교를 무시했다. 사용에주의를 기울여이 함수에 초 논리를 추가 할 수 있습니다.
"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;
}
}
예
alert(compareTime('8:30','11:20'));
@ kamil-p 덕분에
ms로 변환을 사용하여 시간을 비교하는 가장 좋은 방법
var minutesOfDay = function(m){
return m.minutes() + m.hours() * 60;
}
return minutesOfDay(now) > minutesOfDay(end);
두 값을 ':'로 분할 한 직후 비교할 수 있습니다.
정규 표현식이별로 편하지 않고, 내 예제는 m / d / Y h : mA 형식의 datetimepicker 필드에서 나온 결과입니다. 이 법적 예에서는 실제 증언 심리 전에 도착해야합니다. 대체 기능을 사용하여 날짜를 정리하여 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 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>
추출 된 시간 부분을 변수로 설정합니다.
// 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;
}
}
}
1을 위해 0:0:5, 0:1:0한 쌍, 그것은 잘못이다.
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...
}