62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
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
|
|
}
|
|
}
|