type FormatDateParams = { format?: "YYYY-MM-DD" | "DD-MM-YYYY" | "MM-DD-YYYY" | "YYYY/MM/DD" | "DD/MM/YYYY" | "Month DD, YYYY" | "DD Month YYYY" | "YYYY" | "MM" | "mm" | "M" | "DD" | "dd" | "D" | "d"; monthFormat?: Format; dayFormat?: Format; }; type Format = "short" | "long"; type FixedDate = string; /** * Formats a given date object into a specified date format string. * * @param date The date object to format. If a string is passed, it must be a valid * date in the format "YYYY-MM-DD". If null is passed, the function * will format the current date. * @param opts An object containing options for the formatter. The following * options are available: * - format: The desired output format. Defaults to "DD/MM/YYYY". * - monthFormat: The format for the month. Defaults to "short". Can * be either "short" or "long". If "long", the full month name * will be used. If "short", the abbreviated month name will be * used. * - dayFormat: The format for the day. Defaults to "short". Can * be either "short" or "long". If "long", the full day name * will be used. If "short", the abbreviated day name will be * used. * @returns A string representing the formatted date. * * Supported formats include: * - "YYYY-MM-DD" * - "DD-MM-YYYY" * - "MM-DD-YYYY" * - "YYYY/MM/DD" * - "DD/MM/YYYY" * - "Month DD, YYYY" * - "DD Month YYYY" * - "YYYY" * - "MM" * - "mm" * - "M" * - "DD" * - "dd" * - "D" */ export declare function formatDate(date?: Date | FixedDate | null, { format, monthFormat, dayFormat, }?: FormatDateParams): string; /** * Retrieves the day of the week from a given date as a string. * * @param {Date | FixedDate | null} date - The date to retrieve the day from. Defaults to the current date. * @param {"short" | "long"} [format="short"] - The format of the day name to return. Defaults to "short". * @returns {string} The day name as a string (e.g. "Mon" or "Monday"). */ export declare function getDayName(date?: Date | FixedDate | null, format?: FormatDateParams["dayFormat"]): string; /** * Retrieves the day of the month from a given date as a zero-padded two-digit string. * * @param {Date | FixedDate | null} date - The date to retrieve the day from. Defaults to the current date. * @returns {string} A two-digit string representing the day of the month (01-31). */ export declare function getDay(date?: Date | FixedDate | null): string; /** * Retrieves the month from a given date as a formatted string. * * @example * const result = getMonthName(); * console.log(result); * // Output: "Jan" (or the current month) * * const result = getMonthName(new Date(), "long"); * console.log(result); * // Output: "August" (or the current month) * * @param {Date | FixedDate | null} [date] - The date to retrieve the month from. * @param {FormatDateParams["monthFormat"]} [format] - The format of the month string. * @returns {string} The month as a formatted string. */ export declare function getMonthName(date?: Date | FixedDate | null, format?: FormatDateParams["monthFormat"]): string; /** * Retrieves the month from a given date as a formatted string. * * This function takes a Date object, a FixedDate object, or null and returns * the month in the specified format. If no date is provided, the current date is used. * * @param {Date | FixedDate | null} [date=new Date()] - The date from which to extract the month. * @param {FormatDateParams["monthFormat"]} [format="short"] - The format to use for the month. * @returns {string} The month extracted from the date, formatted as a number. */ export declare function getMonth(date?: Date | FixedDate | null): number; /** * Retrieves the year from a given date as a string. * * This function takes a Date object, a FixedDate object, or null and returns * the year in the "YYYY" format. If no date is provided, the current date is used. * * @param {Date | FixedDate | null} [date=new Date()] - The date from which to extract the year. * @returns {string} The year extracted from the date, formatted as a string. */ export declare function getYear(date?: Date | FixedDate | null): number; type FormatTimeParams = { format?: "HH:mm:ss" | "HH:mm" | "hh:mmA" | "hh:mm:ssA" | "HH:mm:ss.SSS"; }; /** * Formats a `Date` object into a readable time string according to the given format. * * The following formats are supported: * * - `HH:mm:ss` (24-hour format with seconds) * - `HH:mm` (24-hour format without seconds) * - `hh:mmA` (12-hour format with AM/PM) * - `hh:mm:ssA` (12-hour format with seconds and AM/PM) * - `HH:mm:ss.SSS` (24-hour format with milliseconds) * * If an unsupported format string is provided, an error will be thrown with a message indicating the unsupported format. * * @param {Date} date The `Date` object to format. * @param {string} [format="hh:mmA"] The format string to use. * @returns {string} A `string` representing the formatted time. * @throws {TypeError} If the `date` parameter is not a `Date` object. * @throws {Error} If the `format` parameter is not a supported format string. */ export declare function formatTime(date?: Date | FixedDate | null, { format }?: FormatTimeParams): string; type FormatDateAndTimeParams = { dateFormat?: FormatDateParams["format"]; timeFormat?: FormatTimeParams["format"]; seperator?: string; }; /** * Formats a `Date` object into a string combining both date and time according to specified formats. * * This function allows customization of the date and time formats and returns a single string * that includes both, separated by a specified separator. * * @param {Date} date - The `Date` object to format. * @param {string} [dateFormat="YYYY-MM-DD"] - The format string for the date portion. * @param {string} [timeFormat="hh:mmA"] - The format string for the time portion. * @param {string} [seperator=" "] - The separator to use between the formatted date and time. * @returns {string} A `string` representing the formatted date and time. * @throws {TypeError} If the `date` parameter is not a `Date` object. */ export declare function formatDateTime(date?: Date | FixedDate | null, { dateFormat, timeFormat, seperator, }?: FormatDateAndTimeParams): string; /** * Returns a human-readable string representing the time elapsed since the given date. * * This function takes a date and calculates the time difference between the current * time and the given date. It returns a string representing the time elapsed in a * human-readable format such as "a few seconds ago", "1 minute ago", or "2 hours ago". * If the difference is in days, weeks, months, or years, it returns the corresponding * string format. * * @param {Date | null | undefined} date - The date to calculate the time elapsed from. * @returns {string} - A human-readable string representing the time elapsed since the given date. * @throws {Error} - Throws an error if the date is null, undefined, or in the future. */ export declare function timeAgo(date: Date | null | undefined): string; /** * Adds the given number of days to the given date and returns a new Date object. * * @param {number} days - The number of days to add to the date. * @param {Date} [date=new Date()] - The date to add the days to. Defaults to the current date. * @returns {Date} - A new Date object with the given number of days added. */ export declare function addDays(days: number, date?: Date): Date; /** * Adds the given number of months to the given date and returns a new Date object. * * @param {number} months - The number of months to add to the date. * @param {Date} [date=new Date()] - The date to add the months to. Defaults to the current date. * @returns {Date} - A new Date object with the given number of months added. */ export declare function addMonths(months: number, date?: Date): Date; /** * Adds the given number of years to the given date and returns a new Date object. * * @param {number} years - The number of years to add to the date. * @param {Date} [date=new Date()] - The date to add the years to. Defaults to the current date. * @returns {Date} - A new Date object with the given number of years added. */ export declare function addYears(years: number, date?: Date): Date; /** * Adds the given number of hours to the given date and returns a new Date object. * * @param {number} hours - The number of hours to add to the date. * @param {Date} [date=new Date()] - The date to add the hours to. Defaults to the current date. * @returns {Date} - A new Date object with the given number of hours added. */ export declare function addHours(hours: number, date?: Date): Date; /** * Adds the given number of minutes to the given date and returns a new Date object. * * @param {number} minutes - The number of minutes to add to the date. * @param {Date} [date=new Date()] - The date to add the minutes to. Defaults to the current date. * @returns {Date} - A new Date object with the given number of minutes added. */ export declare function addMinutes(minutes: number, date?: Date): Date; /** * Adds the specified number of seconds to a given date and returns a new Date object. * * @param {number} seconds - The number of seconds to add to the date. * @param {Date} [date=new Date()] - The date to which the seconds will be added. Defaults to the current date. * @returns {Date} A new Date object with the specified number of seconds added. */ export declare function addSeconds(seconds: number, date?: Date): Date; /** * Retrieves the number of days in a given month. * * This function takes a Date object and returns the number of days in its * corresponding month. If no Date object is provided, it defaults to the * current month. * * @param {Date} [date=new Date()] - The date to retrieve the days in month from. * @returns {number} The number of days in the month. */ export declare function daysInMonth(date?: Date): number; /** * Returns true if the given date is today, false otherwise. * * @param {Date} date The date to check. * @returns {boolean} True if the given date is today. */ export declare function isToday(date: Date): boolean; /** * Returns true if the given date is tomorrow, false otherwise. * * @param {Date} date The date to check. * @returns {boolean} True if the given date is tomorrow. */ export declare function isTomorrow(date: Date): boolean; /** * Checks if a given date is yesterday. * * This function determines whether the provided date corresponds to the day * before the current date. It returns true if the date is yesterday, otherwise * it returns false. * * @param {Date} date - The date to check. * @returns {boolean} - `true` if the date is yesterday, `false` otherwise. */ export declare function isYesterday(date: Date): boolean; type IsPastOptions = { includeTime?: boolean; }; /** * Checks if a given date is in the past. * * Takes a Date object and determines if it is earlier than the current date. * Returns a boolean indicating whether the date is in the past. * * @param {Date} date The date to check. * @param {IsPastOptions} options Configuration options * @param {boolean} [options.includeTime=true] Whether to include time in the comparison * @returns {boolean} `true` if the date is in the past. */ export declare function isPast(date: Date, options?: IsPastOptions): boolean; type IsFutureOptions = { includeTime?: boolean; }; /** * Checks if a given date is in the future. * * Takes a Date object and determines if it is later than the current date. * Returns a boolean indicating whether the date is in the future. * * @param {Date} date The date to check. * @param {IsFutureOptions} options Configuration options * @param {boolean} [options.includeTime=true] Whether to include time in the comparison * @returns {boolean} `true` if the date is in the future. */ export declare function isFuture(date: Date, options?: IsFutureOptions): boolean; /** * Returns the number of days between two dates. * * This function takes two dates and calculates the number of days * between them. It returns the difference in days as an integer. * * @param {Date} date1 - The first date to compare. * @param {Date} date2 - The second date to compare. * @returns {number} - The number of days between the two dates. */ export declare function daysBetween(date1: Date, date2: Date): number; /** * Returns the number of hours between two dates. * * This function takes two dates and calculates the number of hours * between them. The returned value is an integer and is always * positive (i.e., the order of the dates does not matter). */ export declare function hoursBetween(date1: Date, date2: Date): number; /** * Returns the number of minutes between two dates. * * This function takes two dates and calculates the number of minutes * between them. It returns the difference in minutes as an integer. * * @param {Date} date1 - The first date to compare. * @param {Date} date2 - The second date to compare. * @returns {number} - The number of minutes between the two dates. */ export declare function minutesBetween(date1: Date, date2: Date): number; /** * Returns the number of days since the given date. * * This function takes a date and calculates the number of days that have * passed since that date. If the given date is in the future, it returns 0. * * @param {Date} date - The date to calculate the number of days since. * @returns {number} - The number of days since the given date. */ export declare function daysSince(date: Date): number; /** * Returns the number of days until the given date from today. * * @param {Date} date - The date to calculate the number of days until. * @returns {number} - The number of days until the given date from today. * @throws {Error} - Throws an error if the date is null, undefined, or in the past. */ export declare function daysUntil(date: Date): number; /** * Calculates the number of hours since the given date. * * @param {Date} date - The date to calculate the hours since. * @returns {number} The number of hours since the given date. */ export declare function hoursSince(date: Date): number; /** * Calculates the number of hours until the given date. * * @param {Date} date - The date to calculate the hours until. * @returns {number} The number of hours until the given date. */ export declare function hoursUntil(date: Date): number; /** * Retrieves the day of the year from a given date. * * @param {Date | FixedDate | null} date - The date to retrieve the day from. Defaults to the current date. * @returns {number} The day of the year (1-365) as per ISO 8601. */ export declare function dayOfYear(date?: Date): number; /** * Retrieves the week of the year from a given date. * * @param {Date | FixedDate | null} date - The date to retrieve the week from. Defaults to the current date. * @returns {number} The week of the year (1-52) as per ISO 8601. */ export declare function weekOfYear(date?: Date): number; /** * Checks if the given date is valid. * * Takes a date in any format that the Date constructor understands and * checks if it is valid. Returns true if the date is valid, false otherwise. * * @param {any} date - The date to check. * @returns {boolean} - `true` if the date is valid, `false` otherwise. */ export declare function isValidDate(date: any): boolean; /** * Extracts the years, months, and days from a given date of birth. * * This function takes a Date object and returns an object with the years, * months, and days properties. * * @param {Date} dateOfBirth - The date of birth to extract the years, months, and days from. * @returns {object} An object with the years, months, and days properties. */ export declare function ageFromDOB(dateOfBirth: Date | string): { years: number; months: number; days: number; }; /** * Returns the first moment of the month for the given date. * * This function takes a date object or a date string and returns a Date object * representing the first moment of that month (00:00:00.000 on the first day). * If the input is invalid, it throws an error. * * @param {Date | string} date - The date to retrieve the start of the month from. * @returns {Date} A Date object representing the first moment of the month. */ export declare function startOfMonth(date: Date | string): Date; /** * Returns the last moment of the month for the given date. * * This function takes a date object or a date string and returns a Date object * representing the last moment of that month (23:59:59.999 on the last day). * If the input is invalid, it throws an error. * * @param {Date | string} date - The date to retrieve the end of the month from. * @returns {Date} A Date object representing the last moment of the month. * @throws {Error} Throws an error if the input date is invalid. */ export declare function endOfMonth(date: Date | string): Date; /** * Normalizes a date object or a date string to a Date object with the hours, minutes, and seconds set to 0. * * This function takes a date object or a date string and returns a Date object representing the same date, but with the time set to * 00:00:00.000. If the input is invalid, it throws an error. * * @param {Date | string} date - The date to normalize. If a string is passed, it must be a valid date in the format "YYYY-MM-DD". * @returns {Date} A Date object representing the normalized date. * @throws {Error} Throws an error if the input date is invalid. */ export declare function normalizeDate(date: Date | string): Date; /** * Checks if a given date is within the given interval. * * This function takes a target date and an object with start and end dates, and * returns a boolean indicating whether the target date is within the given * interval. If the `ignoreTime` option is set to true, the function will ignore * the time of the dates and only compare the dates. * * If the target date or either of the start or end dates is invalid, the function * throws an error. * * @param {Date | string} target - The date to check. * @param {object} options - An object with the start and end dates, and an * optional `ignoreTime` flag. * @param {Date | string} options.start - The start date of the interval. * @param {Date | string} options.end - The end date of the interval. * @param {boolean} [options.ignoreTime=false] - If true, the time of the dates * will be ignored. * @returns {boolean} `true` if the target date is within the given interval. * @throws {Error} Throws an error if the target date or either of the start or * end dates is invalid. */ export declare function isWithinInterval(target: Date | string, options: { start: Date | string; end: Date | string; ignoreTime?: boolean; }): boolean; /** * Checks if a given date is a weekend. * * This function takes a date object or a date string and returns a boolean * indicating whether the date is a weekend (Saturday or Sunday). * * @param {Date | string} date - The date to check. * @returns {boolean} `true` if the date is a weekend, `false` otherwise. * @throws {Error} Throws an error if the input date is invalid. */ export declare function isWeekend(date: Date | string): boolean; /** * Checks if a given date is a weekday. * * This function takes a date object or a date string and returns a boolean * indicating whether the date is a weekday (Monday to Friday). * * @param {Date | string} date - The date to check. * @returns {boolean} `true` if the date is a weekday, `false` otherwise. * @throws {Error} Throws an error if the input date is invalid. */ export declare function isWeekday(date: Date | string): boolean; /** * Retrieves the first date of the month for the given date. * * This function takes a date object or a date string and returns a Date object * representing the first date of the month. If no date is provided, the current * date is used. * * @param {Date | string} [date=new Date()] - The date to retrieve the first date of the month from. * @returns {Date} A Date object representing the first date of the month. * @throws {Error} Throws an error if the input date is invalid. */ export declare function firstDateOfMonth(date?: Date | string): Date; /** * Retrieves the last date of the month for the given date. * * This function takes a date object or a date string and returns a Date object * representing the last date of the month. If no date is provided, the current * date is used. * * @param {Date | string} [date=new Date()] - The date to retrieve the last date of the month from. * @returns {Date} A Date object representing the last date of the month. * @throws {Error} Throws an error if the input date is invalid. */ export declare function lastDateOfMonth(date?: Date | string): Date; export {};