UNPKG

agm-dateformat

Version:

A simple date formatting library

67 lines (60 loc) 2.42 kB
const agmFormatDate = (dateInput, format = 'dd/mm/yyyy') => { let date; function parseDate(input) { const parsedDate = new Date(input); if (isNaN(parsedDate.getTime())) { throw new Error('Invalid date'); } return parsedDate; } if (typeof dateInput === 'string') { date = parseDate(dateInput); } else if (typeof dateInput === 'number') { date = new Date(dateInput); } else if (dateInput instanceof Date) { date = dateInput; } else { throw new Error('Unsupported date format'); } if (isNaN(date.getTime())) { throw new Error('Invalid date'); } const day = String(date.getUTCDate()).padStart(2, '0'); const month = date.toLocaleString('default', { month: 'short' }); const monthFull = date.toLocaleString('default', { month: 'long' }); const monthNumber = String(date.getUTCMonth() + 1).padStart(2, '0'); const year = date.getUTCFullYear(); const yearShort = String(year).slice(-2); const hours24 = date.getUTCHours(); const minutes = String(date.getUTCMinutes()).padStart(2, '0'); const ampm = hours24 >= 12 ? 'PM' : 'AM'; const hours12 = hours24 % 12 || 12; const weekday = date.toLocaleDateString('en-US', { weekday: 'long' }); switch (format) { case 'dd-mm-yyyy': return `${day}-${monthNumber}-${year}`; case 'dd/mm/yyyy': return `${day}/${monthNumber}/${year}`; case 'dd mmm yyyy': return `${day} ${month} ${year}`; case 'mmm dd yyyy': return `${monthFull} ${day} ${year}`; case 'ddd tt': return `${date.toLocaleDateString('en-US', { weekday: 'short' })} ${hours12}:${minutes} ${ampm}`; case 'mmm dd': return `${month}-${day}`; case 'dddd dd mmm yyyy': return `${weekday}, ${day} ${monthFull} ${year}`; case 'dd-mm-yy': return `${day}-${monthNumber}-${yearShort}`; case 'dd/mm/yy': return `${day}/${monthNumber}/${yearShort}`; case 'dd/mm/yyyy tt': return `${day}/${monthNumber}/${year} ${hours24}:${minutes} ${ampm}`; case 'dd-mm-yyyy tt': return `${day}-${monthNumber}-${year} ${hours12}:${minutes} ${ampm}`; default: throw new Error('Unsupported format'); } } export default agmFormatDate;