4

I have 2 different times. Now I want to compare these 2 times which are of the same date. I want to check which is the greater time. How can I do that. This is my code:

start_time = 10:30 AM
end_time = 12:30 PM

function modify_time(){
    var start_time = $('#start_time').val();
    var end_time = $('#end_time').val();
    if (start_time != '' && end_time != '') { 
        alert(start_time); alert(end_time);
        if (end_time <= start_time) {
            alert('select valid time');
            $('#start_time').val('');
            $('#end_time').val('');
        }
    }
}

Thank You.

Rory McCrossan
  • 331,213
  • 40
  • 305
  • 339

5 Answers5

2

I hope you are looking for such logic:

var start_time = "10:30 AM";
var end_time = "10:20 AM";

start_time = start_time.toLowerCase(); 
end_time = end_time.toLowerCase(); 

function getMin(timeStrin)
{
  var isPM = false;
  if(timeStrin.indexOf("pm") > -1)
     isPM = true;
    
  timeStrin = timeStrin.replace("am","");
  timeStrin = timeStrin.replace("pm","");
  var timeArr =  timeStrin.split(":");
  var hr = parseInt(timeArr[0],10);
  var min = parseInt(timeArr[1],10);
  if(isPM && hr>=1 && hr != 12)
    hr = hr+12;
  
  return (hr*60 + min);
    
}


if (start_time != '' && end_time != '') { 
 
  start_time = getMin(start_time);
  end_time = getMin(end_time);
  alert(start_time); 
 alert(end_time);
 if (end_time <= start_time) {
  alert('select valid time');
 }
}
vijayP
  • 11,432
  • 5
  • 25
  • 40
0

Try This Example..

//Set the extracted part of the time to variables. 
// If you dont have the second part then set it to 0.
var startHour = extractedStartHour;
var startMinute = extractedStartMinute;
var startSecond = extractedStartSecond;

var endHour = extractedEndHour;
var endMinute = extractedEndMinute;
var endSecond = extractedEndSecond;

//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.');
}
xfx
  • 1,918
  • 1
  • 19
  • 25
Maheshvirus
  • 6,749
  • 2
  • 38
  • 40
0

Add the same static date in front of both time and use below coding

var d=new Date("October 16, 1990 10:30 AM");
var starttime = d.getTime();

var d=new Date("October 16, 1990 12:30 PM");
var endtime = d.getTime();

if(start_time!='' && end_time!=''){ alert(start_time); alert(end_time);
                if(end_time<=start_time){
                    alert('select valid time');
                    $('#start_time').val('');
                    $('#end_time').val('');
                }
            }
msvairam
  • 862
  • 5
  • 12
0

For simplicity, just convert to a number and add an offset for PM. replace(/\D/g,'') will replace all non numeric chars with nothing.

var startTime = $('#start_time').val();
var endTime = $('#end_time').val();

var startTimeValue = parseInt(startTime.replace(/\D/g,''));
var endTimeValue = parseInt(endTime.replace(/\D/g,''));

startTimeValue += startTime.indexOf("PM") > -1 ? 1200 : 0;
endTimeValue += endTime.indexOf("PM") > -1 ? 1200 : 0;

alert(startTimeValue <= endTimeValue);
Jonas Köritz
  • 2,606
  • 21
  • 33
0

Try it

    function modify_time(){
                var start_time=$('#start_time').val();
                var end_time=$('#end_time').val();
                if(start_time!='' && end_time!=''){alert(start_time); alert(end_time);
 var s_time = start_time.split(":");
var e_time = start_time.split(":");
                   if( s_time[0] > e_time[0]){
                     alert('select valid time');
                        $('#start_time').val('');
                        $('#end_time').val('');
                    }else if(s_time[0] == e_time[0]){
                        if(s_time[1] >=e_time[1]){
                       alert('select valid time');
                        $('#start_time').val('');
                        $('#end_time').val('');
                        }
                    }

                }
            }
Sajeeb Ahamed
  • 6,070
  • 2
  • 21
  • 30