Reputation: 113
This code is to compare the dates only. And I am looking to compare the time as well. Can anyone give the correct solution to this for angular 8 solution?
{headerName: 'Start Date', field: 'CreatedDate', sortable:true,
cellRenderer: (data) => {
return data.value ? (new Date(data.value)).toLocaleDateString() : '';
}, comparator: dateComparator}
function dateComparator(date1, date2) {
var date1Number = monthToComparableNumber(date1);
var date2Number = monthToComparableNumber(date2);
if (date1Number === null && date2Number === null) {
return 0;
}
if (date1Number === null) {
return -1;
}
if (date2Number === null) {
return 1;
}
return date1Number - date2Number;
}
function monthToComparableNumber(date) {
if (date === undefined || date === null || date.length !== 10) {
return null;
}
var yearNumber = date.substring(6, 10);
var monthNumber = date.substring(3, 5);
var dayNumber = date.substring(0, 2);
var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;
return result;
}
Upvotes: 2
Views: 11119
Reputation: 1186
function dateComparator(date1, date2) {
var date1Number = date1 && new Date(date1).getTime();
var date2Number = date2 && new Date(date2).getTime();
if (date1Number == null && date2Number == null) {
return 0;
}
if (date1Number == null) {
return -1;
} else if (date2Number == null) {
return 1;
}
return date1Number - date2Number;
}
I'd use the double equals instead of the triple equals because date1Number == null
also checks for undefined
.
Upvotes: 8