@rr0/time
Version:
EDTF parsing
90 lines • 3.9 kB
text/typescript
/** @import { EDTFParser } from "../../EDTFParser.mjs" */
/** @import { Level2Year } from "../year/Level2Year.mjs" */
/** @import { Level2Month } from "../month/Level2Month.mjs" */
/** @import { Level2Day } from "../day/Level2Day.mjs" */
/** @import { Level2Hour } from "../hour/Level2Hour.mjs" */
/** @import { Level2Minute } from "../minute/Level2Minute.mjs" */
/** @import { Level2Second } from "../second/Level2Second.mjs" */
/** @import { Level2Timeshift } from "../timeshift/Level2Timeshift.mjs" */
/** @import { Level2Factory } from "../Level2Factory.mjs" */
/**
* @typedef {Object} Level2DateSpec
* @property {Level2Year|number} year
* @property {Level2Month|number} [month]
* @property {Level2Day|number} [day]
* @property {Level2Hour|number} [hour]
* @property {Level2Minute|number} [minute]
* @property {Level2Second|number} [second]
* @property {Level2Timeshift|number} [timeshift]
*/
/**
* A level 2 EDTF Date.
*
* @template {Level2Year} [Y=Level2Year]
* @template {Level2Month} [MM=Level2Month]
* @template {Level2Day} [D=Level2Day]
* @template {Level2Hour} [H=Level2Hour]
* @template {Level2Minute} [M=Level2Minute]
* @template {Level2Second} [S=Level2Second]
* @template {Level2Timeshift} [Z=Level2Timeshift]
* @extends {Level1Date<Level2Year, Level2Month, Level2Day, Level2Hour, Level2Minute, Level2Second, Level2Timeshift>}
*/
export class Level2Date<Y extends Level2Year = Level2Year, MM extends Level2Month = Level2Month, D extends Level2Day = Level2Day, H extends Level2Hour = Level2Hour, M extends Level2Minute = Level2Minute, S extends Level2Second = Level2Second, Z extends Level2Timeshift = Level2Timeshift> extends Level1Date<Level2Year, Level2Month, Level2Day, Level2Hour, Level2Minute, Level2Second, Level2Timeshift> {
/**
* @param {Date} date
* @return {Level2Date}
*/
static fromDate(date: Date): Level2Date;
/**
* @param {string} str An EDTF level 0-2 string
* @param {EDTFParser} parser
* @return {Level2Date<Level2Year,Level2Month>}
*/
static fromString(str: string, parser?: EDTFParser<any>): Level2Date<Level2Year, Level2Month>;
static newInstance(): Level2Date<Level2Year, Level2Month, Level2Day, Level2Hour, Level2Minute, Level2Second, Level2Timeshift>;
/**
* @param {Level2DateSpec|undefined} [spec]
*/
constructor(spec?: Level2DateSpec | undefined);
/**
* @param {Level2Year|undefined} value
*/
set year(value: Level2Year);
/**
* @return {Level2Year|undefined}
*/
get year(): Level2Year;
/**
* @param {Level2Month|undefined} value
*/
set month(value: Level2Month);
/**
* @return {Level2Month|undefined}
*/
get month(): Level2Month;
/**
* @type {Level2Factory}
*/
get factory(): Level2Factory<any, any, any, any, any, any, any>;
clone(): Level2Date<Level2Year, Level2Month, Level2Day, Level2Hour, Level2Minute, Level2Second, Level2Timeshift>;
}
export type Level2DateSpec = {
year: Level2Year | number;
month?: Level2Month | number;
day?: Level2Day | number;
hour?: Level2Hour | number;
minute?: Level2Minute | number;
second?: Level2Second | number;
timeshift?: Level2Timeshift | number;
};
import type { Level2Year } from "../year/Level2Year.mjs";
import type { Level2Month } from "../month/Level2Month.mjs";
import type { Level2Day } from "../day/Level2Day.mjs";
import type { Level2Hour } from "../hour/Level2Hour.mjs";
import type { Level2Minute } from "../minute/Level2Minute.mjs";
import type { Level2Second } from "../second/Level2Second.mjs";
import type { Level2Timeshift } from "../timeshift/Level2Timeshift.mjs";
import { Level1Date } from "../../level1/date/Level1Date.mjs";
import type { Level2Factory } from "../Level2Factory.mjs";
import type { EDTFParser } from "../../EDTFParser.mjs";
//# sourceMappingURL=Level2Date.d.mts.map