How to check if one date is before another date using JavaScript\JQuery?
Very simple, Date
instance can be compared directly.
function compareTime(time1, time2) {
return new Date(time1) > new Date(time2); // true if time1 is later
}
When you compare two Date
instance, or minus one another, the valueOf
method will be called internally, which convert the instance to timestamp (millisecond accurate).
This will work:
function dateCompare(date1, date2){
return new Date(date2) > new Date(date1);
}
Returns true
if date2
is later, false
otherwise. Call with dateCompare('01/12/2014', '02/24/2014')
.
function dateCompare(date1, date2){
return new Date(date2) > new Date(date1);
}
// Demo (uses jQuery)
$("tbody tr").each(function(){
$tr = $(this);
$td = $tr.children('td');
date1 = $td.eq(0).text();
date2 = $td.eq(1).text();
result = dateCompare(date1,date2);
$td.eq(2).text(result);
if($td.eq(2).text() == $td.eq(3).text()) $tr.css('background','green');
else $tr.css('background','red');
});
table{
border-collapse: collapse;
}
td{
padding: 5px;
border: 1px solid #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<table>
<thead>
<tr>
<td>date1</td>
<td>date2</td>
<td>Result</td>
<td>Expected</td>
</tr>
</thead>
<tbody>
<tr>
<td>01/12/2014</td>
<td>02/24/2014</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>01/12/2013</td>
<td>02/24/2012</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>01/12/2014</td>
<td>02/24/2018</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>01/12/2015</td>
<td>02/24/2011</td>
<td></td>
<td>false</td>
</tr>
</tbody>
</table>
I also made a fiddle, if you prefer.
Further reading: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date