@tubular/time
Version:
Date/time, IANA timezones, leap seconds, TAI/UTC conversions, calendar with settable Julian/Gregorian switchover
189 lines • 10.2 kB
TypeScript
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