@ukbhra/common-utils
Version:
A collection of reusable utility functions for string, object, validation, and general operations in Node.js projects.
66 lines • 2.44 kB
JavaScript
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc.js';
import timezone from 'dayjs/plugin/timezone.js';
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js';
import duration from 'dayjs/plugin/duration.js';
import relativeTime from 'dayjs/plugin/relativeTime.js';
import customParseFormat from 'dayjs/plugin/customParseFormat.js';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.extend(isSameOrBefore);
dayjs.extend(isSameOrAfter);
dayjs.extend(duration);
dayjs.extend(relativeTime);
dayjs.extend(customParseFormat);
/**
* Format a date into the specified format (default: YYYY-MM-DD)
*/
export const formatDate = (date, format = 'YYYY-MM-DD', tz) => (tz ? dayjs(date).tz(tz).format(format) : dayjs(date).format(format));
/**
* Get current timestamp in ISO or custom format
*/
export const now = (format = '') => format ? dayjs().format(format) : dayjs().toISOString();
/**
* Add time (days/hours/minutes etc.)
* Only valid units for manipulation: 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'
*/
export const addTime = (date, amount, unit) => dayjs(date).add(amount, unit).toDate();
/**
* Subtract time (days/hours/minutes etc.)
* Only valid units for manipulation: 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'
*/
export const subtractTime = (date, amount, unit) => dayjs(date).subtract(amount, unit).toDate();
/**
* Get difference between two dates in specified unit
*/
export const diffIn = (date1, date2, unit = 'day', float = false) => dayjs(date1).diff(dayjs(date2), unit, float);
/**
* Check if two dates are on same day
*/
export const isSameDay = (date1, date2) => dayjs(date1).isSame(date2, 'day');
/**
* Check if a date is in the past
*/
export const isPast = (date) => dayjs(date).isBefore(dayjs());
/**
* Check if a date is in the future
*/
export const isFuture = (date) => dayjs(date).isAfter(dayjs());
/**
* Get human readable relative time (e.g., "3 hours ago")
*/
export const fromNow = (date) => dayjs(date).fromNow();
/**
* Convert date to UTC
*/
export const toUTC = (date) => dayjs(date).utc().toISOString();
/**
* Convert to specific timezone
*/
export const toTimezone = (date, tz) => dayjs(date).tz(tz).format();
/**
* Parse a date with custom format
*/
export const parseDate = (input, format) => dayjs(input, format);
//# sourceMappingURL=dateUtil.js.map