@rr0/time
Version:
EDTF parsing
171 lines • 5.33 kB
text/typescript
/** @import { Level0Component } from "../component/index.mjs" */
/** @import { EDTFParser } from "../../EDTFParser.mjs" */
/**
* @typedef {Object} Level0DateSpec
* @property {Level0Year|number} [year]
* @property {Level0Month|number} [month]
* @property {Level0Day|number} [day]
* @property {Level0Hour|number} [hour]
* @property {Level0Minute|number} [minute]
* @property {Level0Second|number} [second]
* @property {Level0Timeshift|number} [timeshift]
*/
/**
* @template {Level0Year} [Y = Level0Year]
* @template {Level0Month} [MM = Level0Month]
* @template {Level0Day} [D = Level0Day]
* @template {Level0Hour} [H = Level0Hour]
* @template {Level0Minute} [M = Level0Minute]
* @template {Level0Second} [S = Level0Second]
* @template {Level0Timeshift} [Z = Level0Timeshift]
*/
export class Level0Date<Y extends Level0Year = Level0Year, MM extends Level0Month = Level0Month, D extends Level0Day = Level0Day, H extends Level0Hour = Level0Hour, M extends Level0Minute = Level0Minute, S extends Level0Second = Level0Second, Z extends Level0Timeshift = Level0Timeshift> {
/**
* @param {string} spec
* @param {EDTFParser} parser
* @return {Level0Date}
*/
static fromString(spec: string, parser?: EDTFParser<any>): Level0Date;
/**
* @param {Date} date
* @return {Level0Date}
*/
static fromDate(date: Date): Level0Date;
/**
* Creates a level 0 current date.
*
* @return {Level0Date}
*/
static newInstance(): Level0Date;
/**
* @param {Level0DateSpec} [spec]
*/
constructor(spec?: Level0DateSpec);
/**
* @param {Y|number|undefined} value
*/
set year(value: number | Y);
/**
* @return {Y|undefined}
*/
get year(): Y;
/**
* @param {MM|number|undefined} value
*/
set month(value: number | MM);
/**
* @return {MM|undefined}
*/
get month(): MM;
/**
* @param {D|number|undefined} value
*/
set day(value: number | D);
/**
* @return {D|undefined}
*/
get day(): D;
/**
* @param {H|number|undefined} value
*/
set hour(value: number | H);
/**
* @return {H|undefined}
*/
get hour(): H;
/**
* @param {M|number|undefined} value
*/
set minute(value: number | M);
/**
* @return {M||undefined}
*/
get minute(): M;
/**
* @param {S|number|undefined} value
*/
set second(value: number | S);
/**
* @return {S|undefined}
*/
get second(): S;
/**
* @param {Level0Timeshift|number|undefined} value
*/
set timeshift(value: number | Level0Timeshift);
/**
* @return {Level0Timeshift|undefined}
*/
get timeshift(): Level0Timeshift;
/**
* @type {Level0Factory}
*/
get factory(): Level0Factory<any, any, any, any, any, any, any>;
/**
* Return the difference between this date and a previous one.
*
* @param {Level0Date} other A date before.
* @return {number} The difference, in milliseconds.
*/
compare(other: Level0Date): number;
/**
* Returns the duration between this date and a previous one.
* Basically, it is a Duration built from #compare()
*
* @param {typeof this} other A date before.
* @return {Level0Duration}
*/
delta(other: typeof this): Level0Duration<any, any, any, any, any, any>;
/**
* How many milliseconds since 0000-00-00T00:00:00.
*
* @return {number}
*/
getTime(): number;
/**
* @param {typeof this} other
* @return {boolean}
*/
isEqual(other: typeof this): boolean;
/**
* @param {typeof this} other
* @return {boolean}
*/
isBefore(other: typeof this): boolean;
/**
* @param {typeof this} other
* @return {boolean}
*/
isAfter(other: typeof this): boolean;
clone(): Level0Date<Level0Year, Level0Month, Level0Day, Level0Hour, Level0Minute, Level0Second, Level0Timeshift>;
previous(): Level0Date<Level0Year, Level0Month, Level0Day, Level0Hour, Level0Minute, Level0Second, Level0Timeshift>;
next(): Level0Date<Level0Year, Level0Month, Level0Day, Level0Hour, Level0Minute, Level0Second, Level0Timeshift>;
toString(renderer?: Level0DateRenderer): string;
/**
* @return {Level0DateSpec}
*/
toSpec(): Level0DateSpec;
toJSON(): Level0DateSpec;
#private;
}
export type Level0DateSpec = {
year?: Level0Year | number;
month?: Level0Month | number;
day?: Level0Day | number;
hour?: Level0Hour | number;
minute?: Level0Minute | number;
second?: Level0Second | number;
timeshift?: Level0Timeshift | number;
};
import { Level0Year } from "../year/index.mjs";
import { Level0Month } from "../month/index.mjs";
import { Level0Day } from "../day/Level0Day.mjs";
import { Level0Hour } from "../hour/index.mjs";
import { Level0Minute } from "../minute/index.mjs";
import { Level0Second } from "../second/index.mjs";
import { Level0Timeshift } from "../timeshift/index.mjs";
import { Level0Factory } from "../Level0Factory.mjs";
import { Level0Duration } from "../duration/index.mjs";
import { Level0DateRenderer } from "./Level0DateRenderer.mjs";
import type { EDTFParser } from "../../EDTFParser.mjs";
//# sourceMappingURL=Level0Date.d.mts.map