@tmlmobilidade/dates 20260616.1147.27 → 20260616.2238.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dates.d.ts +13 -11
- package/dist/dates.js +39 -33
- package/dist/lib/date-format.d.ts +1 -0
- package/dist/lib/date-format.js +1 -0
- package/package.json +1 -1
package/dist/dates.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type DatesFormat } from './lib/date-format.js';
|
|
2
2
|
import { type TimezoneIdentified } from './lib/timezone-identified.js';
|
|
3
|
-
import { type OperationalDate, type UnixTimestamp } from '@tmlmobilidade/types';
|
|
3
|
+
import { CalendarDate, type OperationalDate, type UnixTimestamp } from '@tmlmobilidade/types';
|
|
4
4
|
import { type DateObjectUnits, type DateTimeUnit, type DurationObjectUnits } from 'luxon';
|
|
5
5
|
interface DatesConstructor {
|
|
6
|
+
calendar_date: CalendarDate;
|
|
6
7
|
iso: null | string;
|
|
7
8
|
js_date: Date;
|
|
8
9
|
operational_date: OperationalDate;
|
|
@@ -20,7 +21,17 @@ export interface CalendarEntry {
|
|
|
20
21
|
period: '1' | '2' | '3';
|
|
21
22
|
}
|
|
22
23
|
export declare class Dates {
|
|
23
|
-
static readonly
|
|
24
|
+
static readonly standardWindowHours = 10;
|
|
25
|
+
calendar_date: CalendarDate;
|
|
26
|
+
iso: null | string;
|
|
27
|
+
js_date: Date;
|
|
28
|
+
operational_date: OperationalDate;
|
|
29
|
+
std_window: {
|
|
30
|
+
end: UnixTimestamp;
|
|
31
|
+
start: UnixTimestamp;
|
|
32
|
+
};
|
|
33
|
+
unix_timestamp: UnixTimestamp;
|
|
34
|
+
constructor(params: DatesConstructor);
|
|
24
35
|
static get FORMATS(): {
|
|
25
36
|
DATE_FULL: DatesFormat;
|
|
26
37
|
DATE_FULL_WITH_YEAR: DatesFormat;
|
|
@@ -39,15 +50,6 @@ export declare class Dates {
|
|
|
39
50
|
};
|
|
40
51
|
static get TIMEZONE_LIST(): readonly ["Africa/Abidjan", "Africa/Accra", "Africa/Algiers", "Africa/Bissau", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/El_Aaiun", "Africa/Johannesburg", "Africa/Juba", "Africa/Khartoum", "Africa/Lagos", "Africa/Maputo", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Asuncion", "America/Atikokan", "America/Bahia_Banderas", "America/Bahia", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson_Creek", "America/Dawson", "America/Denver", "America/Detroit", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Fort_Nelson", "America/Fortaleza", "America/Glace_Bay", "America/Goose_Bay", "America/Grand_Turk", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Juneau", "America/Kentucky", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Maceio", "America/Managua", "America/Manaus", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port_of_Spain", "America/Port-au-Prince", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Sitka", "America/St_Johns", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Vancouver", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Chita", "Asia/Choibalsan", "Asia/Colombo", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Riyadh", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/Stanley", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth", "Australia/Sydney", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belgrade", "Europe/Berlin", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Helsinki", "Europe/Istanbul", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Lisbon", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Paris", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/Saratov", "Europe/Simferopol", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zaporozhye", "Europe/Zurich", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Reunion", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Wake", "Pacific/Wallis"];
|
|
41
52
|
static get TIMEZONE_LIST_VALUES(): import("zod").Values<["Africa/Abidjan", "Africa/Accra", "Africa/Algiers", "Africa/Bissau", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/El_Aaiun", "Africa/Johannesburg", "Africa/Juba", "Africa/Khartoum", "Africa/Lagos", "Africa/Maputo", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Asuncion", "America/Atikokan", "America/Bahia_Banderas", "America/Bahia", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson_Creek", "America/Dawson", "America/Denver", "America/Detroit", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Fort_Nelson", "America/Fortaleza", "America/Glace_Bay", "America/Goose_Bay", "America/Grand_Turk", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Juneau", "America/Kentucky", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Maceio", "America/Managua", "America/Manaus", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port_of_Spain", "America/Port-au-Prince", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Sitka", "America/St_Johns", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Vancouver", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Chita", "Asia/Choibalsan", "Asia/Colombo", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Riyadh", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/Stanley", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth", "Australia/Sydney", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belgrade", "Europe/Berlin", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Helsinki", "Europe/Istanbul", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Lisbon", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Paris", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/Saratov", "Europe/Simferopol", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zaporozhye", "Europe/Zurich", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Reunion", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Wake", "Pacific/Wallis"]>;
|
|
42
|
-
iso: null | string;
|
|
43
|
-
js_date: Date;
|
|
44
|
-
operational_date: OperationalDate;
|
|
45
|
-
std_window: {
|
|
46
|
-
end: UnixTimestamp;
|
|
47
|
-
start: UnixTimestamp;
|
|
48
|
-
};
|
|
49
|
-
unix_timestamp: UnixTimestamp;
|
|
50
|
-
constructor({ iso, js_date, operational_date, std_window, unix_timestamp }: DatesConstructor);
|
|
51
53
|
/**
|
|
52
54
|
* Creates a Dates object from a date/time string in a specific format.
|
|
53
55
|
* @param text The date/time string to parse.
|
package/dist/dates.js
CHANGED
|
@@ -1,34 +1,28 @@
|
|
|
1
|
-
/*
|
|
2
|
-
import { FORMATS, OPERATIONAL_DATE_FORMAT } from './lib/date-format.js';
|
|
1
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
|
+
import { CALENDAR_DATE_FORMAT, FORMATS, OPERATIONAL_DATE_FORMAT } from './lib/date-format.js';
|
|
3
3
|
import { TimezoneIdentifiedSchema, TimezoneIdentifiedValues } from './lib/timezone-identified.js';
|
|
4
4
|
import { DateTime } from 'luxon';
|
|
5
5
|
/* * */
|
|
6
6
|
export class Dates {
|
|
7
7
|
//
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
static STANDARD_WINDOW_HOURS = 10;
|
|
11
|
-
static get FORMATS() { return FORMATS; }
|
|
12
|
-
static get TIMEZONE_LIST() { return TimezoneIdentifiedValues; }
|
|
13
|
-
static get TIMEZONE_LIST_VALUES() { return TimezoneIdentifiedSchema.Values; }
|
|
14
|
-
//
|
|
15
|
-
// Instance properties
|
|
8
|
+
static standardWindowHours = 10;
|
|
9
|
+
calendar_date;
|
|
16
10
|
iso;
|
|
17
11
|
js_date;
|
|
18
12
|
operational_date;
|
|
19
13
|
std_window;
|
|
20
14
|
unix_timestamp;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.unix_timestamp = unix_timestamp;
|
|
15
|
+
constructor(params) {
|
|
16
|
+
this.calendar_date = params.calendar_date;
|
|
17
|
+
this.iso = params.iso ?? null;
|
|
18
|
+
this.js_date = params.js_date;
|
|
19
|
+
this.operational_date = params.operational_date;
|
|
20
|
+
this.std_window = params.std_window;
|
|
21
|
+
this.unix_timestamp = params.unix_timestamp;
|
|
29
22
|
}
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
static get FORMATS() { return FORMATS; }
|
|
24
|
+
static get TIMEZONE_LIST() { return TimezoneIdentifiedValues; }
|
|
25
|
+
static get TIMEZONE_LIST_VALUES() { return TimezoneIdentifiedSchema.Values; }
|
|
32
26
|
/**
|
|
33
27
|
* Creates a Dates object from a date/time string in a specific format.
|
|
34
28
|
* @param text The date/time string to parse.
|
|
@@ -42,6 +36,7 @@ export class Dates {
|
|
|
42
36
|
.fromFormat(text, format, { setZone: true })
|
|
43
37
|
.setZone(timezone, { keepLocalTime: true });
|
|
44
38
|
return new Dates({
|
|
39
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
45
40
|
iso: dateTime.toISO(),
|
|
46
41
|
js_date: dateTime.toJSDate(),
|
|
47
42
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -58,6 +53,7 @@ export class Dates {
|
|
|
58
53
|
static fromISO(isoText) {
|
|
59
54
|
const dateTime = DateTime.fromISO(isoText, { setZone: true });
|
|
60
55
|
return new Dates({
|
|
56
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
61
57
|
iso: dateTime.toISO(),
|
|
62
58
|
js_date: dateTime.toJSDate(),
|
|
63
59
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -75,6 +71,7 @@ export class Dates {
|
|
|
75
71
|
.fromJSDate(date)
|
|
76
72
|
.setZone('utc', { keepLocalTime: false });
|
|
77
73
|
return new Dates({
|
|
74
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
78
75
|
iso: dateTime.toISO(),
|
|
79
76
|
js_date: dateTime.toJSDate(),
|
|
80
77
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -94,6 +91,7 @@ export class Dates {
|
|
|
94
91
|
.setZone(timezone, { keepLocalTime: true })
|
|
95
92
|
.set({ hour: 4, millisecond: 0, minute: 0, second: 0 }); // Start of the operational date
|
|
96
93
|
return new Dates({
|
|
94
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
97
95
|
iso: dateTime.toISO(),
|
|
98
96
|
js_date: dateTime.toJSDate(),
|
|
99
97
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -111,6 +109,7 @@ export class Dates {
|
|
|
111
109
|
.fromSeconds(seconds)
|
|
112
110
|
.setZone('utc', { keepLocalTime: false });
|
|
113
111
|
return new Dates({
|
|
112
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
114
113
|
iso: dateTime.toISO(),
|
|
115
114
|
js_date: dateTime.toJSDate(),
|
|
116
115
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -128,6 +127,7 @@ export class Dates {
|
|
|
128
127
|
.fromMillis(millis)
|
|
129
128
|
.setZone('utc', { keepLocalTime: false });
|
|
130
129
|
return new Dates({
|
|
130
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
131
131
|
iso: dateTime.toISO(),
|
|
132
132
|
js_date: dateTime.toJSDate(),
|
|
133
133
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -145,6 +145,7 @@ export class Dates {
|
|
|
145
145
|
.now()
|
|
146
146
|
.setZone(timezone, { keepLocalTime: false });
|
|
147
147
|
return new Dates({
|
|
148
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
148
149
|
iso: dateTime.toISO(),
|
|
149
150
|
js_date: dateTime.toJSDate(),
|
|
150
151
|
operational_date: this.prototype.getOperationalDate(dateTime.toISO()),
|
|
@@ -157,15 +158,15 @@ export class Dates {
|
|
|
157
158
|
* Returns an empty array if the request fails
|
|
158
159
|
*/
|
|
159
160
|
static async fetchCalendarData() {
|
|
160
|
-
let calendarJson = [];
|
|
161
161
|
try {
|
|
162
|
+
let calendarJson = [];
|
|
162
163
|
const response = await fetch('https://go.carrismetropolitana.pt/api/dates/public');
|
|
163
164
|
calendarJson = !response.ok ? [] : await response.json();
|
|
165
|
+
return calendarJson;
|
|
164
166
|
}
|
|
165
167
|
catch (error) {
|
|
166
168
|
console.error('Error fetching calendar data:', error);
|
|
167
169
|
}
|
|
168
|
-
return calendarJson;
|
|
169
170
|
}
|
|
170
171
|
/**
|
|
171
172
|
* Returns the difference between this date and another date.
|
|
@@ -192,6 +193,7 @@ export class Dates {
|
|
|
192
193
|
.fromISO(this.iso, { setZone: true })
|
|
193
194
|
.endOf(unit);
|
|
194
195
|
return new Dates({
|
|
196
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
195
197
|
iso: dateTime.toISO(),
|
|
196
198
|
js_date: dateTime.toJSDate(),
|
|
197
199
|
operational_date: this.getOperationalDate(dateTime.toISO()),
|
|
@@ -211,6 +213,7 @@ export class Dates {
|
|
|
211
213
|
.fromISO(this.iso, { setZone: true })
|
|
212
214
|
.minus(duration);
|
|
213
215
|
return new Dates({
|
|
216
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
214
217
|
iso: dateTime.toISO(),
|
|
215
218
|
js_date: dateTime.toJSDate(),
|
|
216
219
|
operational_date: this.getOperationalDate(dateTime.toISO()),
|
|
@@ -230,6 +233,7 @@ export class Dates {
|
|
|
230
233
|
.fromISO(this.iso, { setZone: true })
|
|
231
234
|
.plus(duration);
|
|
232
235
|
return new Dates({
|
|
236
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
233
237
|
iso: dateTime.toISO(),
|
|
234
238
|
js_date: dateTime.toJSDate(),
|
|
235
239
|
operational_date: this.getOperationalDate(dateTime.toISO()),
|
|
@@ -249,6 +253,7 @@ export class Dates {
|
|
|
249
253
|
.fromISO(this.iso, { setZone: true })
|
|
250
254
|
.set(dateOrTime);
|
|
251
255
|
return new Dates({
|
|
256
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
252
257
|
iso: dateTime.toISO(),
|
|
253
258
|
js_date: dateTime.toJSDate(),
|
|
254
259
|
operational_date: this.getOperationalDate(dateTime.toISO()),
|
|
@@ -271,6 +276,7 @@ export class Dates {
|
|
|
271
276
|
.fromISO(this.iso, { setZone: true })
|
|
272
277
|
.setZone(timezone, { keepLocalTime: method === 'rebase_utc' });
|
|
273
278
|
return new Dates({
|
|
279
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
274
280
|
iso: dateTime.toISO(),
|
|
275
281
|
js_date: dateTime.toJSDate(),
|
|
276
282
|
operational_date: this.getOperationalDate(dateTime.toISO()),
|
|
@@ -290,6 +296,7 @@ export class Dates {
|
|
|
290
296
|
.fromISO(this.iso, { setZone: true })
|
|
291
297
|
.startOf(unit);
|
|
292
298
|
return new Dates({
|
|
299
|
+
calendar_date: dateTime.toFormat(CALENDAR_DATE_FORMAT),
|
|
293
300
|
iso: dateTime.toISO(),
|
|
294
301
|
js_date: dateTime.toJSDate(),
|
|
295
302
|
operational_date: this.getOperationalDate(dateTime.toISO()),
|
|
@@ -304,11 +311,14 @@ export class Dates {
|
|
|
304
311
|
* @returns { minutes: number, hours: number, days: number }
|
|
305
312
|
*/
|
|
306
313
|
timeUntil(unixTimestamp) {
|
|
314
|
+
// Calculate the difference in milliseconds
|
|
307
315
|
const now = Date.now();
|
|
308
316
|
const diffMs = unixTimestamp - now;
|
|
317
|
+
// Calculate the time remaining
|
|
309
318
|
const minutes = diffMs / (1000 * 60);
|
|
310
319
|
const hours = diffMs / (1000 * 60 * 60);
|
|
311
320
|
const days = diffMs / (1000 * 60 * 60 * 24);
|
|
321
|
+
// Return the time components
|
|
312
322
|
return { days, hours, minutes };
|
|
313
323
|
}
|
|
314
324
|
/**
|
|
@@ -364,36 +374,32 @@ export class Dates {
|
|
|
364
374
|
dateTime.setLocale(locale);
|
|
365
375
|
return dateTime.toLocaleString(format, { locale: locale });
|
|
366
376
|
}
|
|
367
|
-
//
|
|
368
|
-
// Private methods
|
|
369
377
|
/**
|
|
370
378
|
* Returns the operational date based on the provided timestamp and format.
|
|
371
379
|
* @param timestamp - The timestamp to be parsed.
|
|
372
380
|
* @returns The operational date in the yyyyLLdd format.
|
|
373
381
|
*/
|
|
374
382
|
getOperationalDate(isoDate) {
|
|
383
|
+
// Skip if the ISO date is not set
|
|
375
384
|
if (!isoDate)
|
|
376
385
|
throw new Error('ISO date is not set.');
|
|
377
|
-
//
|
|
378
386
|
// Get the date object
|
|
379
387
|
const dateObject = DateTime.fromISO(isoDate, { setZone: true });
|
|
380
|
-
//
|
|
381
388
|
// Check if the time is between 00:00 and 03:59.
|
|
382
389
|
// The operational date is between 04:00 and 03:59 of the following day.
|
|
383
390
|
let operationalDate;
|
|
384
391
|
if (dateObject.hour < 4) {
|
|
385
|
-
// If true,
|
|
386
|
-
|
|
392
|
+
// If true, unwind the clock by 12 hours to
|
|
393
|
+
// return the previous day in the yyyyLLdd format
|
|
394
|
+
const previousDay = dateObject.minus({ hours: 12 });
|
|
387
395
|
operationalDate = previousDay.toFormat(OPERATIONAL_DATE_FORMAT);
|
|
388
396
|
}
|
|
389
397
|
else {
|
|
390
398
|
// Else, return the current day in the yyyyLLdd format
|
|
391
399
|
operationalDate = dateObject.toFormat(OPERATIONAL_DATE_FORMAT);
|
|
392
400
|
}
|
|
393
|
-
//
|
|
394
|
-
// Validate the operational date and return it
|
|
401
|
+
// Return the date as an operational date
|
|
395
402
|
return operationalDate;
|
|
396
|
-
//
|
|
397
403
|
}
|
|
398
404
|
/**
|
|
399
405
|
* This function returns the start and end of the standard window interval for a given timestamp.
|
|
@@ -407,8 +413,8 @@ export class Dates {
|
|
|
407
413
|
throw new Error('ISO date is not set.');
|
|
408
414
|
const dateTime = DateTime.fromISO(isoDate, { setZone: true });
|
|
409
415
|
return {
|
|
410
|
-
end: dateTime.plus({ hours: Dates.
|
|
411
|
-
start: dateTime.minus({ hours: Dates.
|
|
416
|
+
end: dateTime.plus({ hours: Dates.standardWindowHours }).toMillis(),
|
|
417
|
+
start: dateTime.minus({ hours: Dates.standardWindowHours }).toMillis(),
|
|
412
418
|
};
|
|
413
419
|
}
|
|
414
420
|
}
|
|
@@ -9,6 +9,7 @@ export interface DatesFormat {
|
|
|
9
9
|
year?: '2-digit' | 'numeric';
|
|
10
10
|
}
|
|
11
11
|
export declare const OPERATIONAL_DATE_FORMAT = "yyyyMMdd";
|
|
12
|
+
export declare const CALENDAR_DATE_FORMAT = "yyyy-MM-dd";
|
|
12
13
|
export declare const FORMATS: {
|
|
13
14
|
DATE_FULL: DatesFormat;
|
|
14
15
|
DATE_FULL_WITH_YEAR: DatesFormat;
|
package/dist/lib/date-format.js
CHANGED