static/js/util/date.js (49 lines of code) (raw):
export function formatDate(startDate, endDate) {
let formatted = '';
let year, month, day;
const isRange = (startDate.getDate() !== endDate.getDate() ||
startDate.getMonth() !== endDate.getMonth() ||
startDate.getFullYear() !== endDate.getFullYear()
);
const nowYear = new Date().getFullYear();
const months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
];
if (isRange) {
month = [
months[startDate.getMonth()],
months[endDate.getMonth()]
];
year = [startDate.getFullYear(), endDate.getFullYear()];
day = [startDate.getDate(), endDate.getDate()];
if (month[0] !== month[1]) {
formatted = month[0] + ' ' + day[0] + '-' + month[1] + ' ' + day[1];
} else {
formatted = month[0] + ' ' + day[0] + '-' + day[1];
}
if (year[0] !== nowYear || year[1] !== nowYear) {
formatted += ', ' + year[1];
}
}
else {
year = startDate.getFullYear();
month = months[startDate.getMonth()];
day = startDate.getDate();
formatted = month + ' ' + day;
if (year !== nowYear) {
formatted += ', ' + year;
}
}
return formatted;
}