JSFiddle - React, Tailwind, and code Playground

by Mike McCaughan

HTML

<ul id="debug">
</ul>

JavaScript

var compareDates = function(date1, date2, smallestDatePart) {
	var diff = 0;
	switch (smallestDatePart) {
		case 'y': 
			diff = date1.getFullYear() - date2.getFullYear();
			break;
		case 'M':
			diff = (date1.getFullYear() - date2.getFullYear()) * 100;
			diff += date1.getMonth() - date2.getMonth();
			break;
		case 'd':
			diff = (date1.getFullYear() - date2.getFullYear()) * 10000;
			diff += (date1.getMonth() - date2.getMonth()) * 100;
			diff += date1.getDate() - date2.getDate();
			break;
		case 'h':
			diff = (date1.getFullYear() - date2.getFullYear()) * 1000000;
			diff += (date1.getMonth() - date2.getMonth()) * 10000;
			diff += (date1.getDate() - date2.getDate()) * 100;
			diff += date1.getHours() - date2.getHours();
			break;
		case 'm':
			diff = (date1.getFullYear() - date2.getFullYear()) * 100000000;
			diff += (date1.getMonth() - date2.getMonth()) * 1000000;
			diff += (date1.getDate() - date2.getDate()) * 10000;
			diff += (date1.getHours() - date2.getHours()) * 100;
			diff += date1.getMinutes() - date2.getMinutes();
			break;
		case 's':
			diff = (date1.getFullYear() - date2.getFullYear()) * 10000000000;
			diff += (date1.getMonth() - date2.getMonth()) * 100000000;
			diff += (date1.getDate() - date2.getDate()) * 1000000;
			diff += (date1.getHours() - date2.getHours()) * 10000;
			diff += (date1.getMinutes() - date2.getMinutes()) * 100;
			diff += date1.getSeconds() - date2.getSeconds();
			break;
        default:
            diff = date1.valueOf() - date2.valueOf();
	}
    return diff === 0 ? 0 : diff < 0 ? -1 : 1;
};
var date1 = new Date();
var date2 = new Date();
date2.setMilliseconds(date2.getMilliseconds() + 1);
$('#debug').append('<li>' + date1 + ' compared to ' + date2 + ', using year: ' + compareDates(date1, date2, 'y') + '</li>');
$('#debug').append('<li>' + date1 + ' compared to ' + date2 + ', using month: ' + compareDates(date1, date2, 'M') + '</li>');
$('#debug').append('<li>' + date1 + ' compared to ' + date2 + ', using day: ' +...