UNPKG

@tubular/time

Version:

Date/time, IANA timezones, leap seconds, TAI/UTC conversions, calendar with settable Julian/Gregorian switchover

189 lines 10.2 kB
import { GregorianChange, Calendar, YearOrDate } from './calendar'; import { DateAndTime, YMDDate } from './common'; import { Timezone } from './timezone'; export declare type DateTimeArg = number | string | DateAndTime | { tai: number; } | Date | number[] | null; export declare enum DateTimeField { BAD_FIELD, FULL = -1, MILLI = 0, MILLI_TAI = 1, SECOND = 2, SECOND_TAI = 3, MINUTE = 4, MINUTE_TAI = 5, HOUR_12 = 6, HOUR = 7, HOUR_TAI = 8, AM_PM = 9, DAY = 10, DAY_TAI = 11, DAY_BY_WEEK = 12, DAY_BY_WEEK_LOCALE = 13, DAY_OF_YEAR = 14, WEEK = 15, WEEK_LOCALE = 16, MONTH = 17, QUARTER = 18, YEAR = 19, YEAR_WEEK = 20, YEAR_WEEK_LOCALE = 21, ERA = 22 } export declare type DateTimeFieldName = 'milli' | 'millis' | 'millisecond' | 'milliseconds' | 'second' | 'seconds' | 'minute' | 'minutes' | 'hour12' | 'hours12' | 'hour' | 'hours' | 'ampm' | 'am_pm' | 'day' | 'days' | 'date' | 'dayByWeek' | 'dayByWeekLocale' | 'dayOfYear' | 'week' | 'weeks' | 'weekLocale' | 'month' | 'months' | 'quarter' | 'quarters' | 'year' | 'years' | 'yearWeek' | 'yearWeekLocale' | 'era' | 'milli_tai' | 'millis_tai' | 'millisecond_tai' | 'milliseconds_tai' | 'second_tai' | 'seconds_tai' | 'minute_tai' | 'minutes_tai' | 'hour_tai' | 'hours_tai' | 'day_tai' | 'days_tai'; export interface Discontinuity { start: string; end: string; delta: number; } export declare class DateTime extends Calendar { private static defaultCenturyBase; private static defaultLocale; private static defaultTimezone; private static defaultTimezoneExplicit; private _deltaTaiMillis; private _epochMillis; private _error; private _leapSecondMillis; private _locale; private _timezone; private _wallTime; private wallTimeCounter; static INVALID_DATE: DateTime; static julianDay(millis: number): number; static millisFromJulianDay(jd: number): number; static julianDay_SGC(year: number, month: number, day: number, hour?: number, minute?: number, second?: number): number; static getDefaultCenturyBase(): number; static setDefaultCenturyBase(newBase: number): void; static getDefaultLocale(): string | string[]; static setDefaultLocale(newLocale: string | string[]): void; static getDefaultTimezone(): Timezone; static setDefaultTimezone(newZone: Timezone | string): void; static isDateTime(obj: any): obj is DateTime; static compare(d1: DateTime, d2: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): number; /** * While TAI millis is generally the best way to compare two dates for sort order, two non-TAI DateTime instances * might have different epochMillis, but identical taiMillis, because of rounding errors. On the other hand, two * non-TAI instances might have identical epochMillis during a leap second, with leapSecondMillis being the only * distinguishing difference. TAI is the only reasonable way to compare a TAI DateTime and a non-TAI DateTime. */ static milliCompare(d1: DateTime, d2: DateTime): number; constructor(initialTime?: DateTimeArg, timezone?: Timezone | string | null, gregorianChange?: GregorianChange); constructor(initialTime?: DateTimeArg, timezone?: Timezone | string | null, locale?: string | string[], gregorianChange?: GregorianChange); clone(cloneLock?: boolean): this; get type(): 'ZONELESS' | 'DATELESS' | 'DATETIME'; get valid(): boolean; get error(): string | undefined; throwIfInvalid(): this; get epochMillis(): number; set epochMillis(newTime: number); get epochSeconds(): number; set epochSeconds(newTime: number); get leapSecondMillis(): number; get deltaTaiMillis(): number; isJustBeforeNegativeLeapSecond(): boolean; isInLeapSecond(): boolean; get utcMillis(): number; set utcMillis(newTime: number); setUtcMillis(newTime: number, leapSecondMillis?: number): this; get utcTimeMillis(): number; set utcTimeMillis(newTime: number); get utcSeconds(): number; set utcSeconds(newTime: number); get utcTimeSeconds(): number; set utcTimeSeconds(newTime: number); get taiMillis(): number; set taiMillis(newTime: number); get taiSeconds(): number; set taiSeconds(newTime: number); toDate(): Date; isTai(): boolean; isUtcBased(): boolean; private getWallTime; get wallTime(): DateAndTime; set wallTime(newTime: DateAndTime); get wallTimeShort(): DateAndTime; get wallTimeSparse(): DateAndTime; get wallTimeLong(): DateAndTime; get timezone(): Timezone; set timezone(newZone: Timezone); tz(newZone: Timezone | string, keepLocalTime?: boolean): this; utc(keepLocalTime?: boolean): this; local(keepLocalTime?: boolean): this; toLocale(newLocale: string | string[]): this; get locale(): string | string[]; set locale(newLocale: string | string[]); get utcOffsetSeconds(): number; get utcOffsetMinutes(): number; get dstOffsetSeconds(): number; get dstOffsetMinutes(): number; isDST(): boolean; getTimezoneDisplayName(): string; private checkDateless; private undefinedIfDateless; add(field: DateTimeField | DateTimeFieldName, amount: number, variableDays?: boolean): this; subtract(field: DateTimeField | DateTimeFieldName, amount: number, variableDays?: boolean): this; roll(field: DateTimeField | DateTimeFieldName, amount: number, minYear?: number, maxYear?: number): this; get(field: DateTimeField | DateTimeFieldName): number; set(field: DateTimeField | DateTimeFieldName, value: number, loose?: boolean): this; startOf(field: DateTimeField | DateTimeFieldName): this; endOf(field: DateTimeField | DateTimeFieldName): this; compare(other: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): number; isBefore(other: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): boolean; isSameOrBefore(other: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): boolean; isSame(other: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): boolean; isSameOrAfter(other: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): boolean; isAfter(other: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): boolean; isBetween(low: DateTime | string | number | Date, high: DateTime | string | number | Date, resolution?: DateTimeField | DateTimeFieldName): boolean; getStartOfDayMillis(yearOrDate?: YearOrDate, month?: number, day?: number): number; getSecondsInDay(yearOrDate?: YearOrDate, month?: number, day?: number): number; getMinutesInDay(yearOrDate?: YearOrDate, month?: number, day?: number): number; getDiscontinuityDuringDay(yearOrDate?: YearOrDate, month?: number, day?: number): Discontinuity | null; getCalendarMonth(year: number, month: number, startingDayOfWeek?: number): YMDDate[]; getCalendarMonth(startingDayOfWeek?: number): YMDDate[]; format(fmt?: string, localeOverride?: string | string[]): string; toString(): string; toYMDhmString(): string; toIsoString(maxLength?: number): string; toHoursAndMinutesString(includeDst?: boolean): string; private updateEpochMillisFromWallTime; computeEpochMillisFromWallTime(wallTime: DateAndTime): number; computeUtcMillisFromWallTime(wallTime: DateAndTime): number; computeTaiMillisFromWallTime(wallTime: DateAndTime): number; private computeEpochMillisFromWallTimeAux; private updateWallTimeFromEpochMillis; getTimeOfDayFieldsFromMillis(millis: number, day?: number, extra?: number): DateAndTime; setGregorianChange(gcYearOrDate: YearOrDate | string, gcMonth?: number, gcDate?: number): this; getDayNumber(yearOrDate: YearOrDate, month?: number, day?: number): number; getFirstDateInMonth(year?: number, month?: number): number; getLastDateInMonth(year?: number, month?: number): number; getDaysInMonth(year?: number, month?: number): number; getDaysInYear(year?: number): number; isLeapYear(year?: number): boolean; getDayOfWeek(): number; getDayOfWeek(year: number, month: number, day: number): number; getDayOfWeek(date: YMDDate | number[]): number; getDateOfNthWeekdayOfMonth(year: number, month: number, dayOfTheWeek: number, index: number): number; getDateOfNthWeekdayOfMonth(dayOfTheWeek: number, index: number): number; getDayOfWeekInMonthCount(year: number, month: number, dayOfTheWeek: number): number; getDayOfWeekInMonthCount(dayOfTheWeek: number): number; getDayOfWeekInMonthIndex(year: number, month: number, day: number): number; getDayOfWeekInMonthIndex(date: YMDDate | number[]): number; getDayOfWeekInMonthIndex(): number; getDayOnOrAfter(year: number, month: number, dayOfTheWeek: number, minDate: number): number; getDayOnOrAfter(dayOfTheWeek: number, minDate: number): number; getDayOnOrBefore(year: number, month: number, dayOfTheWeek: number, maxDate: number): number; getDayOnOrBefore(dayOfTheWeek: number, minDate: number): number; addDaysToDate(deltaDays: number, yearOrDate: YearOrDate, month?: number, day?: number): YMDDate; addDaysToDate(deltaDays: number): YMDDate; getMissingDateRange(year?: number, month?: number): number[] | null; getStartDateOfFirstWeekOfYear(year: number, startingDayOfWeek?: number, minDaysInCalendarYear?: number): YMDDate; getWeeksInYear(year: number, startingDayOfWeek?: number, minDaysInCalendarYear?: number): number; getWeeksInYearLocale(year: number): number; getYearWeekAndWeekday(year: number, month: number, day: number, startingDayOfWeek?: number, minDaysInCalendarYear?: number): number[]; getYearWeekAndWeekday(date: YearOrDate | number, startingDayOfWeek?: number, minDaysInCalendarYear?: number): number[]; getYearWeekAndWeekdayLocale(year: number, month: number, day: number): number[]; getYearWeekAndWeekdayLocale(date: YearOrDate | number): number[]; } //# sourceMappingURL=date-time.d.ts.map