date-vir
Version:
Easy and explicit dates and times.
92 lines (91 loc) • 2.71 kB
TypeScript
import { type Timezone, type UtcTimezone } from '../timezone/timezones.js';
import { type DateLike } from './date-like.js';
import { type FullDate } from './full-date-shape.js';
/**
* Parses the given {@link DateLike} and converts it into a {@link FullDate} instance with the user's
* current timezone.
*
* @category FullDate
* @example
*
* ```ts
* import {createFullDateInUserTimezone} from 'date-vir';
*
* createFullDateInUserTimezone('June 1, 2024');
* createFullDateInUserTimezone(new Date());
* createFullDateInUserTimezone(112300120);
* ```
*/
export declare function createFullDateInUserTimezone(dateLike: Readonly<DateLike>): FullDate;
/**
* Parses the given {@link DateLike} and converts it into a {@link FullDate} instance with the UTC
* timezone.
*
* @category FullDate
* @example
*
* ```ts
* import {createUtcFullDate} from 'date-vir';
*
* createUtcFullDate('June 1, 2024');
* createUtcFullDate(new Date());
* createUtcFullDate(112300120);
* ```
*/
export declare function createUtcFullDate(dateLike: Readonly<DateLike>): FullDate<UtcTimezone>;
/**
* Parses the given {@link DateLike} and converts it into a {@link FullDate} instance with the given
* timezone.
*
* @category FullDate
* @example
*
* ```ts
* import {createFullDate, timezones, utcTimezone} from 'date-vir';
*
* createFullDate('June 1, 2024', utcTimezone);
* createFullDate(new Date(), timezones['Australia/Brisbane']);
* createFullDate(112300120, timezones['Etc/GMT-11']);
* ```
*/
export declare function createFullDate<const SpecificTimezone extends Timezone>(
/** The original date representation to be converted into a FullDate. */
dateLike: Readonly<DateLike>,
/** The timezone that this date/time is meant for / originated from. */
timezone: SpecificTimezone): FullDate<SpecificTimezone>;
/**
* Converts a {@link FullDate} instance into a new instance with the original's date and time
* represented in the new timezone.
*
* @category Conversion
* @example
*
* ```ts
* import {toNewTimezone} from 'date-vir';
*
* const exampleDate: FullDate = {
* year: 2024,
* month: 1,
* day: 5,
* hour: 1,
* minute: 1,
* second: 1,
* millisecond: 1,
* timezone: 'UTC',
* };
*
* let result = toNewTimezone(exampleDate, timezones['Australia/Brisbane']);
* // output:
* result = {
* year: 2024,
* month: 1,
* day: 5,
* hour: 11,
* minute: 1,
* second: 1,
* millisecond: 1,
* timezone: timezones['Australia/Brisbane'],
* };
* ```
*/
export declare function toNewTimezone<const SpecificTimezone extends Timezone>(fullDate: Readonly<FullDate>, timezone: SpecificTimezone): FullDate<SpecificTimezone>;