export const DAYS = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', ]; export function formatMonth(iso: string) { const date = new Date(iso); const dd = date.getDate().toString(); const mm = (date.getMonth() + 1).toString(); return `${dd}/${mm}`; } function twelveHour(twentyFourHour: string) { const [hourString, minute] = twentyFourHour.split(':'); const hour = +hourString % 24; return (hour % 12 || 12) + ':' + minute + (hour < 12 ? ' AM' : ' PM'); } function dayOfWeek(iso: string) { const date = new Date(iso); const day = date.getDay(); const target = DAYS[day]; return target.slice(0, 3); } /** * @param iso ISO formatted date, e.g. 1996-12-24T14:03:04 * @param kind Intended format for the date, e.g. '%Y-%m-%d %H:%M' */ export function format(iso: string, kind: string) { const split = iso.split('T'); const [year, month, day] = split[0].split('-'); const time = twelveHour(split[1]); switch (kind) { case '%Y-%m-%d %H:%M': return iso.replace('T', ' ').replace(/:\d{2}/, ''); case '%Y-%m-%d': return split[0]; case '%H:%M': return split[1].replace(/:\d{2}/, ''); case '%d/%m/%y %h:%M %p': return `${day}/${month}/${year} ${time}`; case '%d/%m %h:%M %p': return `${day}/${month} ${time}`; case '%d/%m/%y': return `${day}/${month}/${year}`; case '%d/%m': return `${day}/${month}`; case '%h:%M %p': return time; case '%A %h:%M %p': return dayOfWeek(iso) + ' ' + time; default: return iso; } }