Uses date-fns/date-fns: ⏳ Modern JavaScript date utility library ⌛️ // src/lib/dateUtils.ts import { formatDistanceToNow, parseISO } from "date-fns"; export const currentMonth = new Date().getMonth(); export const currentDay = new Date().getDate(); export const currentYear = new Date().getFullYear(); export const getCurrentMonthWithZeros = () => { const month = currentMonth + 1; return month < 10 ? `0${month}` : month; }; /** * This is the format of the date coming from the database: 2024-01-25T06:45:03.044958+00:00 * Returns an array of the date in the format: [day, month, year] */ export const getDateArray = (dateString: string): string[] => { // Take a date formatted like this: 2024-01-25T06:45:03.044958+00:00 // and return an array like this: ['01', '25', '2024'] const date = new Date(dateString); const day = String(date.getUTCDate()).padStart(2, '0'); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // Months are 0-based, so we add 1 const year = String(date.getUTCFullYear()); return [day, month, year]; }; export const getMonthName = (month: string) => { const months = [ "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec", ]; return months[parseInt(month) - 1]; }; export const getFullMonthName = (month: number) => { const months = [ "January", "February", "March", "April", "May", "June", "July", "Aug", "Sept", "October", "November", "December", ]; return months[month - 1]; } /** * Takes a timestamp, formatted like 2024-02-23T14:39:39.638854+00:00 and turns into a relative time */ export const relativeTime = (timestamp: string) => { const date = parseISO(timestamp); return formatDistanceToNow(date, { addSuffix: true }); } /** * Takes a date, like 2024-03-12 and returns a long date like March 12, 2024 * @param string - date in the format of "2024-03-12" * @returns string - like "March 12, 2024" */ export const getLongDate = (date: string) => { const [day, month, year] = getDateArray(date); return `${getFullMonthName(parseInt(month))} ${parseInt(day)}, ${year}`; }