@cityssm/utils-datetime 1.0.0 → 1.1.0
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/README.md +1 -1
- package/dateIntegerToDate.js +5 -7
- package/dateIntegerToDate.ts +12 -10
- package/dateIntegerToString.d.ts +2 -1
- package/dateIntegerToString.js +2 -4
- package/dateIntegerToString.ts +11 -9
- package/dateStringToDate.d.ts +2 -1
- package/dateStringToDate.ts +10 -2
- package/dateStringToInteger.d.ts +2 -1
- package/dateStringToInteger.ts +7 -1
- package/dateTimeTypes.d.ts +3 -0
- package/dateTimeTypes.js +1 -0
- package/dateTimeTypes.ts +14 -0
- package/dateToInteger.ts +5 -0
- package/dateToString.d.ts +2 -1
- package/dateToString.ts +9 -2
- package/dateToTimeInteger.ts +5 -0
- package/dateToTimePeriodString.d.ts +2 -1
- package/dateToTimePeriodString.ts +9 -2
- package/dateToTimeString.d.ts +2 -1
- package/dateToTimeString.ts +9 -2
- package/index.d.ts +13 -0
- package/index.js +12 -0
- package/index.ts +21 -0
- package/isValidDateInteger.d.ts +1 -0
- package/isValidDateInteger.js +5 -0
- package/isValidDateInteger.ts +12 -0
- package/isValidDateString.d.ts +1 -0
- package/isValidDateString.js +6 -0
- package/isValidDateString.ts +14 -0
- package/isValidTimeInteger.d.ts +1 -0
- package/isValidTimeInteger.js +6 -0
- package/isValidTimeInteger.ts +13 -0
- package/isValidTimeString.d.ts +1 -0
- package/isValidTimeString.js +6 -0
- package/isValidTimeString.ts +14 -0
- package/package.json +3 -3
- package/timeIntegerToPeriodString.d.ts +2 -1
- package/timeIntegerToPeriodString.ts +9 -1
- package/timeIntegerToString.d.ts +2 -1
- package/timeIntegerToString.js +2 -2
- package/timeIntegerToString.ts +13 -3
- package/timeStringToInteger.d.ts +2 -1
- package/timeStringToInteger.js +1 -1
- package/timeStringToInteger.ts +9 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# node-utils-datetime
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@cityssm/utils-datetime)
|
|
4
|
-
[](https://app.deepsource.com/gh/cityssm/node-utils-datetime/)
|
|
5
5
|
[](https://codeclimate.com/github/cityssm/node-utils-datetime/maintainability)
|
|
6
6
|
[](https://codecov.io/gh/cityssm/node-utils-datetime)
|
|
7
7
|
|
package/dateIntegerToDate.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { isValidDateInteger } from './isValidDateInteger.js';
|
|
1
2
|
export function dateIntegerToDate(dateInteger, timeInteger = 0) {
|
|
2
|
-
if (dateInteger
|
|
3
|
-
|
|
4
|
-
Number.isNaN(dateInteger) ||
|
|
5
|
-
dateInteger === 0) {
|
|
6
|
-
return;
|
|
3
|
+
if (!isValidDateInteger(dateInteger)) {
|
|
4
|
+
return undefined;
|
|
7
5
|
}
|
|
8
|
-
const dateString =
|
|
9
|
-
const timeString =
|
|
6
|
+
const dateString = `00000000${dateInteger.toString()}`.slice(-8);
|
|
7
|
+
const timeString = `0000${(timeInteger ?? 0).toString()}`.slice(-4);
|
|
10
8
|
return new Date(Number.parseInt(dateString.slice(0, 4), 10), Number.parseInt(dateString.slice(4, 6), 10) - 1, Number.parseInt(dateString.slice(6, 8), 10), Number.parseInt(timeString.slice(0, 2), 10), Number.parseInt(timeString.slice(2, 4), 10));
|
|
11
9
|
}
|
package/dateIntegerToDate.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isValidDateInteger } from './isValidDateInteger.js'
|
|
2
|
+
|
|
1
3
|
export function dateIntegerToDate(
|
|
2
4
|
dateInteger: number,
|
|
3
5
|
timeInteger?: number
|
|
@@ -7,22 +9,22 @@ export function dateIntegerToDate(
|
|
|
7
9
|
timeInteger?: number
|
|
8
10
|
): undefined
|
|
9
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @param {number | undefined | null} dateInteger - A number representing a date (ex. 20241231)
|
|
14
|
+
* @param {number} timeInteger - A number representing a time (ex. 2359)
|
|
15
|
+
* @returns {Date | undefined} - A Date object (ex. '2024-12-31 23:59')
|
|
16
|
+
*/
|
|
10
17
|
export function dateIntegerToDate(
|
|
11
18
|
dateInteger: number | undefined | null,
|
|
12
|
-
timeInteger = 0
|
|
19
|
+
timeInteger: number | undefined | null = 0
|
|
13
20
|
): Date | undefined {
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
dateInteger === undefined ||
|
|
17
|
-
Number.isNaN(dateInteger) ||
|
|
18
|
-
dateInteger === 0
|
|
19
|
-
) {
|
|
20
|
-
return
|
|
21
|
+
if (!isValidDateInteger(dateInteger)) {
|
|
22
|
+
return undefined
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
const dateString = (
|
|
25
|
+
const dateString = `00000000${(dateInteger as number).toString()}`.slice(-8)
|
|
24
26
|
|
|
25
|
-
const timeString =
|
|
27
|
+
const timeString = `0000${(timeInteger ?? 0).toString()}`.slice(-4)
|
|
26
28
|
|
|
27
29
|
return new Date(
|
|
28
30
|
Number.parseInt(dateString.slice(0, 4), 10),
|
package/dateIntegerToString.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DateString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function dateIntegerToString(dateInteger: number): DateString;
|
|
2
3
|
export declare function dateIntegerToString(dateInteger: null | undefined | 0): '';
|
package/dateIntegerToString.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { dateIntegerToDate } from './dateIntegerToDate.js';
|
|
2
2
|
import { dateToString } from './dateToString.js';
|
|
3
|
+
import { isValidDateInteger } from './isValidDateInteger.js';
|
|
3
4
|
export function dateIntegerToString(dateInteger) {
|
|
4
|
-
if (dateInteger
|
|
5
|
-
dateInteger === undefined ||
|
|
6
|
-
Number.isNaN(dateInteger) ||
|
|
7
|
-
dateInteger === 0) {
|
|
5
|
+
if (!isValidDateInteger(dateInteger)) {
|
|
8
6
|
return '';
|
|
9
7
|
}
|
|
10
8
|
return dateToString(dateIntegerToDate(dateInteger));
|
package/dateIntegerToString.ts
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { dateIntegerToDate } from './dateIntegerToDate.js'
|
|
2
|
+
import type { DateString } from './dateTimeTypes.js'
|
|
2
3
|
import { dateToString } from './dateToString.js'
|
|
4
|
+
import { isValidDateInteger } from './isValidDateInteger.js'
|
|
3
5
|
|
|
4
|
-
export function dateIntegerToString(dateInteger: number):
|
|
6
|
+
export function dateIntegerToString(dateInteger: number): DateString
|
|
5
7
|
export function dateIntegerToString(dateInteger: null | undefined | 0): ''
|
|
6
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Formats a date number as a string.
|
|
11
|
+
* @param {number | undefined | null} dateInteger - A number representing a date.
|
|
12
|
+
* @returns {DateString | ''} - A string representing a date.
|
|
13
|
+
*/
|
|
7
14
|
export function dateIntegerToString(
|
|
8
15
|
dateInteger: number | undefined | null
|
|
9
|
-
):
|
|
10
|
-
if (
|
|
11
|
-
dateInteger === null ||
|
|
12
|
-
dateInteger === undefined ||
|
|
13
|
-
Number.isNaN(dateInteger) ||
|
|
14
|
-
dateInteger === 0
|
|
15
|
-
) {
|
|
16
|
+
): DateString | '' {
|
|
17
|
+
if (!isValidDateInteger(dateInteger)) {
|
|
16
18
|
return ''
|
|
17
19
|
}
|
|
18
20
|
|
|
19
|
-
return dateToString(dateIntegerToDate(dateInteger))
|
|
21
|
+
return dateToString(dateIntegerToDate(dateInteger as number))
|
|
20
22
|
}
|
package/dateStringToDate.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DateString, TimeString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function dateStringToDate(dateString: DateString, timeString?: TimeString): Date;
|
package/dateStringToDate.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import type { DateString, TimeString } from './dateTimeTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a string date and time as a JavaScript Date object.
|
|
5
|
+
* @param {DateString} dateString - A string representing a date.
|
|
6
|
+
* @param {TimeString} timeString - A string representing a time.
|
|
7
|
+
* @returns {Date} - A JavaScript Date object.
|
|
8
|
+
*/
|
|
1
9
|
export function dateStringToDate(
|
|
2
|
-
dateString:
|
|
3
|
-
timeString = '00:00'
|
|
10
|
+
dateString: DateString,
|
|
11
|
+
timeString: TimeString = '00:00'
|
|
4
12
|
): Date {
|
|
5
13
|
const datePieces = dateString.split('-')
|
|
6
14
|
const timePieces = timeString.split(':')
|
package/dateStringToInteger.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DateString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function dateStringToInteger(dateString: DateString): number;
|
package/dateStringToInteger.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { dateStringToDate } from './dateStringToDate.js'
|
|
2
|
+
import type { DateString } from './dateTimeTypes.js'
|
|
2
3
|
import { dateToInteger } from './dateToInteger.js'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Formats a date string as a number.
|
|
7
|
+
* @param {DateString} dateString - A date formatted as a string (ex. '2024-12-31')
|
|
8
|
+
* @returns {number} - A number representing a date.
|
|
9
|
+
*/
|
|
10
|
+
export function dateStringToInteger(dateString: DateString): number {
|
|
5
11
|
return dateToInteger(dateStringToDate(dateString))
|
|
6
12
|
}
|
package/dateTimeTypes.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dateTimeTypes.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* yyyy-mm-dd
|
|
3
|
+
*/
|
|
4
|
+
export type DateString = `${number}-${number}-${number}`
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* hh:mm
|
|
8
|
+
*/
|
|
9
|
+
export type TimeString = `${number}:${number}`
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* h:mm a.m. | h:mm p.m.
|
|
13
|
+
*/
|
|
14
|
+
export type TimePeriodString = `${number}:${number} ${'a.m.' | 'p.m.'}`
|
package/dateToInteger.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a JavaScript Date object as a number.
|
|
3
|
+
* @param {Date} dateObject - A JavaScript Date object.
|
|
4
|
+
* @returns {number} - A number representing the date.
|
|
5
|
+
*/
|
|
1
6
|
export function dateToInteger(dateObject: Date): number {
|
|
2
7
|
return (
|
|
3
8
|
dateObject.getFullYear() * 10_000 +
|
package/dateToString.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DateString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function dateToString(dateObject: Date): DateString;
|
package/dateToString.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DateString } from './dateTimeTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a JavaScript Date object as a date string.
|
|
5
|
+
* @param {Date} dateObject - A JavaScript Date object
|
|
6
|
+
* @returns {DateString} A date string.
|
|
7
|
+
*/
|
|
8
|
+
export function dateToString(dateObject: Date): DateString {
|
|
2
9
|
return Intl.DateTimeFormat('fr-CA', {
|
|
3
10
|
year: 'numeric',
|
|
4
11
|
month: '2-digit',
|
|
5
12
|
day: '2-digit'
|
|
6
|
-
}).format(dateObject)
|
|
13
|
+
}).format(dateObject) as DateString
|
|
7
14
|
}
|
package/dateToTimeInteger.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats the time in a JavaScript Date as a number.
|
|
3
|
+
* @param {Date} dateObject - A JavaString Date object.
|
|
4
|
+
* @returns {number} - A number representing a time.
|
|
5
|
+
*/
|
|
1
6
|
export function dateToTimeInteger(dateObject: Date): number {
|
|
2
7
|
return dateObject.getHours() * 100 + dateObject.getMinutes()
|
|
3
8
|
}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimePeriodString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function dateToTimePeriodString(dateObject: Date): TimePeriodString;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimePeriodString } from './dateTimeTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a JavaScript Date as a time period string.
|
|
5
|
+
* @param {Date} dateObject - A JavaScript Date object.
|
|
6
|
+
* @returns {TimePeriodString} - A time string formatted with the time period (ex. 1:23 a.m.)
|
|
7
|
+
*/
|
|
8
|
+
export function dateToTimePeriodString(dateObject: Date): TimePeriodString {
|
|
2
9
|
return Intl.DateTimeFormat('en-CA', {
|
|
3
10
|
hourCycle: 'h12',
|
|
4
11
|
hour: 'numeric',
|
|
5
12
|
minute: '2-digit'
|
|
6
13
|
})
|
|
7
14
|
.format(dateObject)
|
|
8
|
-
.replaceAll('\u202F', ' ')
|
|
15
|
+
.replaceAll('\u202F', ' ') as TimePeriodString
|
|
9
16
|
}
|
package/dateToTimeString.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimeString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function dateToTimeString(dateObject: Date): TimeString;
|
package/dateToTimeString.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimeString } from './dateTimeTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a JavaScript Date object as a time string.
|
|
5
|
+
* @param {Date} dateObject - A JavaScript Date object.
|
|
6
|
+
* @returns {TimeString} - A string representing the time.
|
|
7
|
+
*/
|
|
8
|
+
export function dateToTimeString(dateObject: Date): TimeString {
|
|
2
9
|
return Intl.DateTimeFormat('en-CA', {
|
|
3
10
|
hourCycle: 'h24',
|
|
4
11
|
hour: '2-digit',
|
|
5
12
|
minute: '2-digit'
|
|
6
|
-
}).format(dateObject)
|
|
13
|
+
}).format(dateObject) as TimeString
|
|
7
14
|
}
|
package/index.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ import { dateToString } from './dateToString.js';
|
|
|
7
7
|
import { dateToTimeInteger } from './dateToTimeInteger.js';
|
|
8
8
|
import { dateToTimePeriodString } from './dateToTimePeriodString.js';
|
|
9
9
|
import { dateToTimeString } from './dateToTimeString.js';
|
|
10
|
+
import { isValidDateInteger } from './isValidDateInteger.js';
|
|
11
|
+
import { isValidDateString } from './isValidDateString.js';
|
|
12
|
+
import { isValidTimeInteger } from './isValidTimeInteger.js';
|
|
13
|
+
import { isValidTimeString } from './isValidTimeString.js';
|
|
10
14
|
import { timeIntegerToPeriodString } from './timeIntegerToPeriodString.js';
|
|
11
15
|
import { timeIntegerToString } from './timeIntegerToString.js';
|
|
12
16
|
import { timeStringToInteger } from './timeStringToInteger.js';
|
|
@@ -24,6 +28,11 @@ export { dateToTimePeriodString } from './dateToTimePeriodString.js';
|
|
|
24
28
|
export { timeIntegerToString } from './timeIntegerToString.js';
|
|
25
29
|
export { timeIntegerToPeriodString } from './timeIntegerToPeriodString.js';
|
|
26
30
|
export { timeStringToInteger } from './timeStringToInteger.js';
|
|
31
|
+
export type { DateString, TimeString, TimePeriodString } from './dateTimeTypes.js';
|
|
32
|
+
export { isValidDateInteger } from './isValidDateInteger.js';
|
|
33
|
+
export { isValidDateString } from './isValidDateString.js';
|
|
34
|
+
export { isValidTimeInteger } from './isValidTimeInteger.js';
|
|
35
|
+
export { isValidTimeString } from './isValidTimeString.js';
|
|
27
36
|
declare const _default: {
|
|
28
37
|
months: string[];
|
|
29
38
|
days: string[];
|
|
@@ -36,6 +45,10 @@ declare const _default: {
|
|
|
36
45
|
dateToTimeInteger: typeof dateToTimeInteger;
|
|
37
46
|
dateToTimeString: typeof dateToTimeString;
|
|
38
47
|
dateToTimePeriodString: typeof dateToTimePeriodString;
|
|
48
|
+
isValidDateInteger: typeof isValidDateInteger;
|
|
49
|
+
isValidDateString: typeof isValidDateString;
|
|
50
|
+
isValidTimeInteger: typeof isValidTimeInteger;
|
|
51
|
+
isValidTimeString: typeof isValidTimeString;
|
|
39
52
|
timeIntegerToString: typeof timeIntegerToString;
|
|
40
53
|
timeIntegerToPeriodString: typeof timeIntegerToPeriodString;
|
|
41
54
|
timeStringToInteger: typeof timeStringToInteger;
|
package/index.js
CHANGED
|
@@ -7,6 +7,10 @@ import { dateToString } from './dateToString.js';
|
|
|
7
7
|
import { dateToTimeInteger } from './dateToTimeInteger.js';
|
|
8
8
|
import { dateToTimePeriodString } from './dateToTimePeriodString.js';
|
|
9
9
|
import { dateToTimeString } from './dateToTimeString.js';
|
|
10
|
+
import { isValidDateInteger } from './isValidDateInteger.js';
|
|
11
|
+
import { isValidDateString } from './isValidDateString.js';
|
|
12
|
+
import { isValidTimeInteger } from './isValidTimeInteger.js';
|
|
13
|
+
import { isValidTimeString } from './isValidTimeString.js';
|
|
10
14
|
import { timeIntegerToPeriodString } from './timeIntegerToPeriodString.js';
|
|
11
15
|
import { timeIntegerToString } from './timeIntegerToString.js';
|
|
12
16
|
import { timeStringToInteger } from './timeStringToInteger.js';
|
|
@@ -45,6 +49,10 @@ export { dateToTimePeriodString } from './dateToTimePeriodString.js';
|
|
|
45
49
|
export { timeIntegerToString } from './timeIntegerToString.js';
|
|
46
50
|
export { timeIntegerToPeriodString } from './timeIntegerToPeriodString.js';
|
|
47
51
|
export { timeStringToInteger } from './timeStringToInteger.js';
|
|
52
|
+
export { isValidDateInteger } from './isValidDateInteger.js';
|
|
53
|
+
export { isValidDateString } from './isValidDateString.js';
|
|
54
|
+
export { isValidTimeInteger } from './isValidTimeInteger.js';
|
|
55
|
+
export { isValidTimeString } from './isValidTimeString.js';
|
|
48
56
|
export default {
|
|
49
57
|
months,
|
|
50
58
|
days,
|
|
@@ -57,6 +65,10 @@ export default {
|
|
|
57
65
|
dateToTimeInteger,
|
|
58
66
|
dateToTimeString,
|
|
59
67
|
dateToTimePeriodString,
|
|
68
|
+
isValidDateInteger,
|
|
69
|
+
isValidDateString,
|
|
70
|
+
isValidTimeInteger,
|
|
71
|
+
isValidTimeString,
|
|
60
72
|
timeIntegerToString,
|
|
61
73
|
timeIntegerToPeriodString,
|
|
62
74
|
timeStringToInteger
|
package/index.ts
CHANGED
|
@@ -7,6 +7,10 @@ import { dateToString } from './dateToString.js'
|
|
|
7
7
|
import { dateToTimeInteger } from './dateToTimeInteger.js'
|
|
8
8
|
import { dateToTimePeriodString } from './dateToTimePeriodString.js'
|
|
9
9
|
import { dateToTimeString } from './dateToTimeString.js'
|
|
10
|
+
import { isValidDateInteger } from './isValidDateInteger.js'
|
|
11
|
+
import { isValidDateString } from './isValidDateString.js'
|
|
12
|
+
import { isValidTimeInteger } from './isValidTimeInteger.js'
|
|
13
|
+
import { isValidTimeString } from './isValidTimeString.js'
|
|
10
14
|
import { timeIntegerToPeriodString } from './timeIntegerToPeriodString.js'
|
|
11
15
|
import { timeIntegerToString } from './timeIntegerToString.js'
|
|
12
16
|
import { timeStringToInteger } from './timeStringToInteger.js'
|
|
@@ -68,6 +72,19 @@ export { timeIntegerToPeriodString } from './timeIntegerToPeriodString.js'
|
|
|
68
72
|
// From Time String
|
|
69
73
|
export { timeStringToInteger } from './timeStringToInteger.js'
|
|
70
74
|
|
|
75
|
+
// Types
|
|
76
|
+
export type {
|
|
77
|
+
DateString,
|
|
78
|
+
TimeString,
|
|
79
|
+
TimePeriodString
|
|
80
|
+
} from './dateTimeTypes.js'
|
|
81
|
+
|
|
82
|
+
// Validators
|
|
83
|
+
export { isValidDateInteger } from './isValidDateInteger.js'
|
|
84
|
+
export { isValidDateString } from './isValidDateString.js'
|
|
85
|
+
export { isValidTimeInteger } from './isValidTimeInteger.js'
|
|
86
|
+
export { isValidTimeString } from './isValidTimeString.js'
|
|
87
|
+
|
|
71
88
|
export default {
|
|
72
89
|
months,
|
|
73
90
|
days,
|
|
@@ -80,6 +97,10 @@ export default {
|
|
|
80
97
|
dateToTimeInteger,
|
|
81
98
|
dateToTimeString,
|
|
82
99
|
dateToTimePeriodString,
|
|
100
|
+
isValidDateInteger,
|
|
101
|
+
isValidDateString,
|
|
102
|
+
isValidTimeInteger,
|
|
103
|
+
isValidTimeString,
|
|
83
104
|
timeIntegerToString,
|
|
84
105
|
timeIntegerToPeriodString,
|
|
85
106
|
timeStringToInteger
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isValidDateInteger(possibleDateInteger: unknown): boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines if a number is a valid date number.
|
|
3
|
+
* @param {unknown} possibleDateInteger - A possible date number
|
|
4
|
+
* @returns {boolean} - True if the possible date integer is valid.
|
|
5
|
+
*/
|
|
6
|
+
export function isValidDateInteger(possibleDateInteger: unknown): boolean {
|
|
7
|
+
return (
|
|
8
|
+
typeof possibleDateInteger === 'number' &&
|
|
9
|
+
possibleDateInteger >= 101 &&
|
|
10
|
+
possibleDateInteger % 1 === 0
|
|
11
|
+
)
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isValidDateString(possibleDateString: unknown): boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const dateStringRegex = /^\d{4}-[01]\d-[0-3]\d$/
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Determines if a string is a valid date string.
|
|
5
|
+
* @param {unknown} possibleDateString - A possible date string
|
|
6
|
+
* @returns {boolean} - True when the possible date string is valid
|
|
7
|
+
*/
|
|
8
|
+
export function isValidDateString(possibleDateString: unknown): boolean {
|
|
9
|
+
return (
|
|
10
|
+
typeof possibleDateString === 'string' &&
|
|
11
|
+
(possibleDateString ?? '').length === 10 &&
|
|
12
|
+
dateStringRegex.test(possibleDateString)
|
|
13
|
+
)
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isValidTimeInteger(possibleTimeInteger: unknown): boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines if a number is a valid time number.
|
|
3
|
+
* @param {unknown} possibleTimeInteger - A possible time number
|
|
4
|
+
* @returns {boolean} - True if the possible time integer is valid.
|
|
5
|
+
*/
|
|
6
|
+
export function isValidTimeInteger(possibleTimeInteger: unknown): boolean {
|
|
7
|
+
return (
|
|
8
|
+
typeof possibleTimeInteger === 'number' &&
|
|
9
|
+
possibleTimeInteger >= 0 &&
|
|
10
|
+
possibleTimeInteger <= 2359 &&
|
|
11
|
+
possibleTimeInteger % 1 === 0
|
|
12
|
+
)
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isValidTimeString(possibleTimeString: unknown): boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const timeStringRegex = /^[01]\d:[0-5]\d$/
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Determines if a string is a valid time string.
|
|
5
|
+
* @param {unknown} possibleTimeString - A possible time string.
|
|
6
|
+
* @returns {boolean} - True when the possible time string is valid.
|
|
7
|
+
*/
|
|
8
|
+
export function isValidTimeString(possibleTimeString: unknown): boolean {
|
|
9
|
+
return (
|
|
10
|
+
typeof possibleTimeString === 'string' &&
|
|
11
|
+
(possibleTimeString ?? '').length === 5 &&
|
|
12
|
+
timeStringRegex.test(possibleTimeString)
|
|
13
|
+
)
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cityssm/utils-datetime",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Date time utilities for Node.js applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"date",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/mocha": "^10.0.6",
|
|
35
|
-
"@types/node": "^20.
|
|
36
|
-
"eslint-config-cityssm": "^1.
|
|
35
|
+
"@types/node": "^20.11.19",
|
|
36
|
+
"eslint-config-cityssm": "^1.4.1"
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimePeriodString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function timeIntegerToPeriodString(timeInteger: number): TimePeriodString;
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { dateIntegerToDate } from './dateIntegerToDate.js'
|
|
2
|
+
import type { TimePeriodString } from './dateTimeTypes.js'
|
|
2
3
|
import { dateToTimePeriodString } from './dateToTimePeriodString.js'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Formats a time represented as a number as a string.
|
|
7
|
+
* @param {number} timeInteger - A number representing a time.
|
|
8
|
+
* @returns {TimePeriodString} - A string representing a time.
|
|
9
|
+
*/
|
|
10
|
+
export function timeIntegerToPeriodString(
|
|
11
|
+
timeInteger: number
|
|
12
|
+
): TimePeriodString {
|
|
5
13
|
// eslint-disable-next-line unicorn/numeric-separators-style
|
|
6
14
|
return dateToTimePeriodString(dateIntegerToDate(19700101, timeInteger))
|
|
7
15
|
}
|
package/timeIntegerToString.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimeString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function timeIntegerToString(timeInteger: number | undefined | null): TimeString;
|
package/timeIntegerToString.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export function timeIntegerToString(timeInteger) {
|
|
2
|
-
const timeString =
|
|
3
|
-
return timeString.slice(0, 2)
|
|
2
|
+
const timeString = `0000${(timeInteger ?? 0).toString()}`.slice(-4);
|
|
3
|
+
return `${timeString.slice(0, 2)}:${timeString.slice(2, 4)}`;
|
|
4
4
|
}
|
package/timeIntegerToString.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { TimeString } from './dateTimeTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a number representing a time as a string.
|
|
5
|
+
* @param {number} timeInteger - A number representing a time.
|
|
6
|
+
* @returns {TimeString} - A string representing a time.
|
|
7
|
+
*/
|
|
8
|
+
export function timeIntegerToString(
|
|
9
|
+
timeInteger: number | undefined | null
|
|
10
|
+
): TimeString {
|
|
11
|
+
const timeString = `0000${(timeInteger ?? 0).toString()}`.slice(-4)
|
|
12
|
+
|
|
13
|
+
return `${timeString.slice(0, 2)}:${timeString.slice(2, 4)}` as TimeString
|
|
4
14
|
}
|
package/timeStringToInteger.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TimeString } from './dateTimeTypes.js';
|
|
2
|
+
export declare function timeStringToInteger(timeString: TimeString): number;
|
package/timeStringToInteger.js
CHANGED
package/timeStringToInteger.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { TimeString } from './dateTimeTypes.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a string representing a time as a number.
|
|
5
|
+
* @param {TimeString} timeString - A string representing a time.
|
|
6
|
+
* @returns {number} - A number representing a time.
|
|
7
|
+
*/
|
|
8
|
+
export function timeStringToInteger(timeString: TimeString): number {
|
|
9
|
+
return Number.parseInt(`0${timeString}`.replaceAll(':', ''), 10)
|
|
3
10
|
}
|