@date-io/core
Version:
Abstraction over common javascript date management libraries
196 lines (170 loc) • 7.13 kB
TypeScript
export interface DateIOFormats<TLibFormatToken = string> {
/** Localized full date @example "Jan 1, 2019" */
fullDate: TLibFormatToken;
/** Partially localized full date with weekday, useful for text-to-speech accessibility @example "Tuesday, January 1, 2019" */
fullDateWithWeekday: TLibFormatToken;
/** Date format string with month and day of month @example "1 January" */
normalDate: TLibFormatToken;
/** Date format string with weekday, month and day of month @example "Wed, Jan 1" */
normalDateWithWeekday: TLibFormatToken;
/** Shorter day format @example "Jan 1" */
shortDate: TLibFormatToken;
/** Year format string @example "2019" */
year: TLibFormatToken;
/** Month format string @example "January" */
month: TLibFormatToken;
/** Short month format string @example "Jan" */
monthShort: TLibFormatToken;
/** Month with year format string @example "January 2018" */
monthAndYear: TLibFormatToken;
/** Month with date format string @example "January 1" */
monthAndDate: TLibFormatToken;
/** Weekday format string @example "Wednesday" */
weekday: TLibFormatToken;
/** Short weekday format string @example "Wed" */
weekdayShort: TLibFormatToken;
/** Day format string @example "1" */
dayOfMonth: TLibFormatToken;
/** Hours format string @example "11" */
hours12h: TLibFormatToken;
/** Hours format string @example "23" */
hours24h: TLibFormatToken;
/** Minutes format string @example "44" */
minutes: TLibFormatToken;
/** Seconds format string @example "00" */
seconds: TLibFormatToken;
/** Full time localized format string @example "11:44 PM" for US, "23:44" for Europe */
fullTime: TLibFormatToken;
/** Not localized full time format string @example "11:44 PM" */
fullTime12h: TLibFormatToken;
/** Not localized full time format string @example "23:44" */
fullTime24h: TLibFormatToken;
/** Date & time format string with localized time @example "Jan 1, 2018 11:44 PM" */
fullDateTime: TLibFormatToken;
/** Not localized date & Time format 12h @example "Jan 1, 2018 11:44 PM" */
fullDateTime12h: TLibFormatToken;
/** Not localized date & Time format 24h @example "Jan 1, 2018 23:44" */
fullDateTime24h: TLibFormatToken;
/** Localized keyboard input friendly date format @example "02/13/2020 */
keyboardDate: TLibFormatToken;
/** Localized keyboard input friendly date/time format @example "02/13/2020 23:44" */
keyboardDateTime: TLibFormatToken;
/** Partially localized keyboard input friendly date/time 12h format @example "02/13/2020 11:44 PM" */
keyboardDateTime12h: TLibFormatToken;
/** Partially localized keyboard input friendly date/time 24h format @example "02/13/2020 23:44" */
keyboardDateTime24h: TLibFormatToken;
}
export type Unit =
| "years"
| "quarters"
| "months"
| "weeks"
| "days"
| "hours"
| "minutes"
| "seconds"
| "milliseconds";
type ConstructorOptions<TLocale> = {
formats?: Partial<DateIOFormats>;
locale?: TLocale;
instance?: any;
};
export interface IUtils<TDate, TLocale> {
formats: DateIOFormats<any>;
locale?: TLocale;
moment?: any;
dayjs?: any;
/** Name of the library that is used right now */
lib: string;
// Constructor type
// new (options?: {
// formats?: Partial<DateIOFormats>;
// locale?: TLocale;
// instance?: any;
// }): IUtils<TDate, TLocale>;
/**
* Creates a date object. Use `utils.date()` to create a new date object of the underlying library.`
* Supports some of the standard input sources like ISO strings so you can pass the string directly
* as `utils.date("2024-01-10T14:30:00Z"), and javascript `Date` objects `utils.date(new Date())`.
*
* if `null` is passed `null` will be returned.
*/
date<
TArg extends unknown = undefined,
TResultingDate extends unknown = TArg extends null
? null
: TArg extends undefined
? TDate
: TDate | null
>(
value?: TArg
): TResultingDate;
toJsDate(value: TDate): Date;
parseISO(isString: string): TDate;
toISO(value: TDate): string;
parse(value: string, format: string): TDate | null;
getCurrentLocaleCode(): string;
is12HourCycleInCurrentLocale(): boolean;
/**
* Returns user readable format (taking into account localized format tokens), useful to render helper text for input (e.g. placeholder).
* If helper can not be created and **for luxon** always returns empty string.
* */
getFormatHelperText(format: string): string;
isNull(value: TDate | null): boolean;
isValid(value: any): boolean;
getDiff(value: TDate, comparing: TDate | string, unit?: Unit): number;
isEqual(value: any, comparing: any): boolean;
isSameDay(value: TDate, comparing: TDate): boolean;
isSameMonth(value: TDate, comparing: TDate): boolean;
isSameYear(value: TDate, comparing: TDate): boolean;
isSameHour(value: TDate, comparing: TDate): boolean;
isAfter(value: TDate, comparing: TDate): boolean;
isAfterDay(value: TDate, comparing: TDate): boolean;
isAfterMonth(value: TDate, comparing: TDate): boolean;
isAfterYear(value: TDate, comparing: TDate): boolean;
isBefore(value: TDate, comparing: TDate): boolean;
isBeforeDay(value: TDate, comparing: TDate): boolean;
isBeforeMonth(value: TDate, comparing: TDate): boolean;
isBeforeYear(value: TDate, comparing: TDate): boolean;
isWithinRange(value: TDate, range: [TDate, TDate]): boolean;
startOfYear(value: TDate): TDate;
endOfYear(value: TDate): TDate;
startOfMonth(value: TDate): TDate;
endOfMonth(value: TDate): TDate;
startOfWeek(value: TDate): TDate;
endOfWeek(value: TDate): TDate;
addSeconds(value: TDate, count: number): TDate;
addMinutes(value: TDate, count: number): TDate;
addHours(value: TDate, count: number): TDate;
addDays(value: TDate, count: number): TDate;
addWeeks(value: TDate, count: number): TDate;
addMonths(value: TDate, count: number): TDate;
addYears(value: TDate, count: number): TDate;
startOfDay(value: TDate): TDate;
endOfDay(value: TDate): TDate;
format(value: TDate, formatKey: keyof DateIOFormats): string;
formatByString(value: TDate, formatString: string): string;
formatNumber(numberToFormat: string): string;
getHours(value: TDate): number;
setHours(value: TDate, count: number): TDate;
getMinutes(value: TDate): number;
setMinutes(value: TDate, count: number): TDate;
getSeconds(value: TDate): number;
setSeconds(value: TDate, count: number): TDate;
getDate(value: TDate): number;
setDate(value: TDate, count: number): TDate;
getMonth(value: TDate): number;
getDaysInMonth(value: TDate): number;
setMonth(value: TDate, count: number): TDate;
getNextMonth(value: TDate): TDate;
getPreviousMonth(value: TDate): TDate;
getMonthArray(value: TDate): TDate[];
getYear(value: TDate): number;
setYear(value: TDate, count: number): TDate;
mergeDateAndTime(date: TDate, time: TDate): TDate;
getWeekdays(): string[];
getWeekArray(date: TDate): TDate[][];
getYearRange(start: TDate, end: TDate): TDate[];
/** Allow to customize displaying "am/pm" strings */
getMeridiemText(ampm: "am" | "pm"): string;
}