import dayjs from 'dayjs'; import relativeTime from 'dayjs/esm/plugin/relativeTime'; import localizedFormat from 'dayjs/plugin/localizedFormat'; import updateLocale from 'dayjs/plugin/updateLocale'; import isToday from 'dayjs/plugin/isToday'; import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; dayjs.extend(updateLocale); dayjs.extend(relativeTime); dayjs.extend(localizedFormat); dayjs.extend(isToday); dayjs.extend(utc); dayjs.extend(timezone); dayjs.shortFormating = (s, ago = false) => { if (s === 'now' || s === 'now ago') { return 'now'; } const prefix = s.split(' ')[0]; const posfix = s.split(' ')[1]; const isPast = s.includes('ago'); let newPostfix = ''; switch (posfix) { case 'minute': newPostfix = 'm'; break; case 'minutes': newPostfix = 'm'; break; case 'hour': newPostfix = 'h'; break; case 'hours': newPostfix = 'h'; break; case 'day': newPostfix = 'd'; break; case 'days': newPostfix = 'd'; break; case 'month': newPostfix = 'M'; break; case 'months': newPostfix = 'M'; break; case 'year': newPostfix = 'Y'; break; case 'years': newPostfix = 'Y'; break; } return `${['a', 'an'].includes(prefix) ? '1' : prefix} ${newPostfix}${ isPast ? (ago ? ' ago' : '') : '' }`; }; export function dayjsLocal(dateTimeString) { let localTimezone = dayjs.tz.guess(); // dates are stored in Asia/Calcutta timezone on the server return dayjs.tz(dateTimeString, 'Asia/Calcutta').tz(localTimezone); } export function dayjsIST(dateTimeString) { return dayjs(dateTimeString).tz('Asia/Calcutta'); } export default dayjs;