You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.3 KiB
149 lines
4.3 KiB
import SystemZone from "./zones/systemZone.js";
|
|
import IANAZone from "./zones/IANAZone.js";
|
|
import Locale from "./impl/locale.js";
|
|
|
|
import { normalizeZone } from "./impl/zoneUtil.js";
|
|
|
|
let now = () => Date.now(),
|
|
defaultZone = "system",
|
|
defaultLocale = null,
|
|
defaultNumberingSystem = null,
|
|
defaultOutputCalendar = null,
|
|
twoDigitCutoffYear = 60,
|
|
throwOnInvalid;
|
|
|
|
/**
|
|
* Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.
|
|
*/
|
|
export default class Settings {
|
|
/**
|
|
* Get the callback for returning the current timestamp.
|
|
* @type {function}
|
|
*/
|
|
static get now() {
|
|
return now;
|
|
}
|
|
|
|
/**
|
|
* Set the callback for returning the current timestamp.
|
|
* The function should return a number, which will be interpreted as an Epoch millisecond count
|
|
* @type {function}
|
|
* @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future
|
|
* @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time
|
|
*/
|
|
static set now(n) {
|
|
now = n;
|
|
}
|
|
|
|
/**
|
|
* Set the default time zone to create DateTimes in. Does not affect existing instances.
|
|
* Use the value "system" to reset this value to the system's time zone.
|
|
* @type {string}
|
|
*/
|
|
static set defaultZone(zone) {
|
|
defaultZone = zone;
|
|
}
|
|
|
|
/**
|
|
* Get the default time zone object currently used to create DateTimes. Does not affect existing instances.
|
|
* The default value is the system's time zone (the one set on the machine that runs this code).
|
|
* @type {Zone}
|
|
*/
|
|
static get defaultZone() {
|
|
return normalizeZone(defaultZone, SystemZone.instance);
|
|
}
|
|
|
|
/**
|
|
* Get the default locale to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static get defaultLocale() {
|
|
return defaultLocale;
|
|
}
|
|
|
|
/**
|
|
* Set the default locale to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultLocale(locale) {
|
|
defaultLocale = locale;
|
|
}
|
|
|
|
/**
|
|
* Get the default numbering system to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static get defaultNumberingSystem() {
|
|
return defaultNumberingSystem;
|
|
}
|
|
|
|
/**
|
|
* Set the default numbering system to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultNumberingSystem(numberingSystem) {
|
|
defaultNumberingSystem = numberingSystem;
|
|
}
|
|
|
|
/**
|
|
* Get the default output calendar to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static get defaultOutputCalendar() {
|
|
return defaultOutputCalendar;
|
|
}
|
|
|
|
/**
|
|
* Set the default output calendar to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultOutputCalendar(outputCalendar) {
|
|
defaultOutputCalendar = outputCalendar;
|
|
}
|
|
|
|
/**
|
|
* Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.
|
|
* @type {number}
|
|
*/
|
|
static get twoDigitCutoffYear() {
|
|
return twoDigitCutoffYear;
|
|
}
|
|
|
|
/**
|
|
* Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.
|
|
* @type {number}
|
|
* @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpretted as current century
|
|
* @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050
|
|
* @example Settings.twoDigitCutoffYear = 1950 // interpretted as 50
|
|
* @example Settings.twoDigitCutoffYear = 2050 // ALSO interpretted as 50
|
|
*/
|
|
static set twoDigitCutoffYear(cutoffYear) {
|
|
twoDigitCutoffYear = cutoffYear % 100;
|
|
}
|
|
|
|
/**
|
|
* Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
|
|
* @type {boolean}
|
|
*/
|
|
static get throwOnInvalid() {
|
|
return throwOnInvalid;
|
|
}
|
|
|
|
/**
|
|
* Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
|
|
* @type {boolean}
|
|
*/
|
|
static set throwOnInvalid(t) {
|
|
throwOnInvalid = t;
|
|
}
|
|
|
|
/**
|
|
* Reset Luxon's global caches. Should only be necessary in testing scenarios.
|
|
* @return {void}
|
|
*/
|
|
static resetCaches() {
|
|
Locale.resetCache();
|
|
IANAZone.resetCache();
|
|
}
|
|
}
|