@cityssm/utils-datetime 1.1.1 → 1.1.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.
@@ -1,2 +1,3 @@
1
- export declare function dateIntegerToDate(dateInteger: number, timeInteger?: number): Date;
2
- export declare function dateIntegerToDate(dateInteger: null | undefined | 0, timeInteger?: number): undefined;
1
+ export declare function dateIntegerToDate<D extends number | undefined | null, T extends number | undefined | null>(dateInteger: D, timeInteger?: T): Date | undefined;
2
+ export declare function dateIntegerToDate(dateInteger: number, timeInteger?: number): Date | undefined;
3
+ export declare function dateIntegerToDate(dateInteger: undefined | null, timeInteger?: undefined | null): undefined;
@@ -1,6 +1,7 @@
1
1
  import { isValidDateInteger } from './isValidDateInteger.js';
2
+ import { isValidTimeInteger } from './isValidTimeInteger.js';
2
3
  export function dateIntegerToDate(dateInteger, timeInteger = 0) {
3
- if (!isValidDateInteger(dateInteger)) {
4
+ if (!isValidDateInteger(dateInteger) || !isValidTimeInteger(timeInteger)) {
4
5
  return undefined;
5
6
  }
6
7
  const dateString = `00000000${dateInteger.toString()}`.slice(-8);
@@ -1,12 +1,19 @@
1
1
  import { isValidDateInteger } from './isValidDateInteger.js'
2
+ import { isValidTimeInteger } from './isValidTimeInteger.js'
3
+
4
+ export function dateIntegerToDate<
5
+ D extends number | undefined | null,
6
+ T extends number | undefined | null
7
+ >(dateInteger: D, timeInteger?: T): Date | undefined
2
8
 
3
9
  export function dateIntegerToDate(
4
10
  dateInteger: number,
5
11
  timeInteger?: number
6
- ): Date
12
+ ): Date | undefined
13
+
7
14
  export function dateIntegerToDate(
8
- dateInteger: null | undefined | 0,
9
- timeInteger?: number
15
+ dateInteger: undefined | null,
16
+ timeInteger?: undefined | null
10
17
  ): undefined
11
18
 
12
19
  /**
@@ -18,7 +25,7 @@ export function dateIntegerToDate(
18
25
  dateInteger: number | undefined | null,
19
26
  timeInteger: number | undefined | null = 0
20
27
  ): Date | undefined {
21
- if (!isValidDateInteger(dateInteger)) {
28
+ if (!isValidDateInteger(dateInteger) || !isValidTimeInteger(timeInteger)) {
22
29
  return undefined
23
30
  }
24
31
 
@@ -1,3 +1,4 @@
1
1
  import type { DateString } from './dateTimeTypes.js';
2
- export declare function dateIntegerToString(dateInteger: number): DateString;
2
+ export declare function dateIntegerToString<D extends number | undefined | null>(dateInteger: D): DateString | '';
3
+ export declare function dateIntegerToString(dateInteger: number): DateString | '';
3
4
  export declare function dateIntegerToString(dateInteger: null | undefined | 0): '';
@@ -3,7 +3,11 @@ import type { DateString } from './dateTimeTypes.js'
3
3
  import { dateToString } from './dateToString.js'
4
4
  import { isValidDateInteger } from './isValidDateInteger.js'
5
5
 
6
- export function dateIntegerToString(dateInteger: number): DateString
6
+ export function dateIntegerToString<D extends number | undefined | null>(
7
+ dateInteger: D
8
+ ): DateString | ''
9
+
10
+ export function dateIntegerToString(dateInteger: number): DateString | ''
7
11
  export function dateIntegerToString(dateInteger: null | undefined | 0): ''
8
12
 
9
13
  /**
@@ -1,2 +1 @@
1
- import type { DateString, TimeString } from './dateTimeTypes.js';
2
- export declare function dateStringToDate(dateString: DateString, timeString?: TimeString): Date;
1
+ export declare function dateStringToDate(dateString: string, timeString?: string): Date | undefined;
@@ -1,4 +1,9 @@
1
+ import { isValidDateString } from './isValidDateString.js';
2
+ import { isValidTimeString } from './isValidTimeString.js';
1
3
  export function dateStringToDate(dateString, timeString = '00:00') {
4
+ if (!isValidDateString(dateString) || !isValidTimeString(timeString)) {
5
+ return undefined;
6
+ }
2
7
  const datePieces = dateString.split('-');
3
8
  const timePieces = timeString.split(':');
4
9
  return new Date(Number.parseInt(datePieces[0], 10), Number.parseInt(datePieces[1], 10) - 1, Number.parseInt(datePieces[2], 10), Number.parseInt(timePieces[0], 10), Number.parseInt(timePieces[1], 10), 0, 0);
@@ -1,15 +1,20 @@
1
- import type { DateString, TimeString } from './dateTimeTypes.js'
1
+ import { isValidDateString } from './isValidDateString.js'
2
+ import { isValidTimeString } from './isValidTimeString.js'
2
3
 
3
4
  /**
4
5
  * 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.
6
+ * @param {string} dateString - A string representing a date.
7
+ * @param {string} timeString - A string representing a time.
7
8
  * @returns {Date} - A JavaScript Date object.
8
9
  */
9
10
  export function dateStringToDate(
10
- dateString: DateString,
11
- timeString: TimeString = '00:00'
12
- ): Date {
11
+ dateString: string,
12
+ timeString: string = '00:00'
13
+ ): Date | undefined {
14
+ if (!isValidDateString(dateString) || !isValidTimeString(timeString)) {
15
+ return undefined
16
+ }
17
+
13
18
  const datePieces = dateString.split('-')
14
19
  const timePieces = timeString.split(':')
15
20
 
@@ -1,2 +1 @@
1
- import type { DateString } from './dateTimeTypes.js';
2
- export declare function dateStringToInteger(dateString: DateString): number;
1
+ export declare function dateStringToInteger(dateString: string): number | undefined;
@@ -1,5 +1,9 @@
1
1
  import { dateStringToDate } from './dateStringToDate.js';
2
2
  import { dateToInteger } from './dateToInteger.js';
3
+ import { isValidDateString } from './isValidDateString.js';
3
4
  export function dateStringToInteger(dateString) {
5
+ if (!isValidDateString(dateString)) {
6
+ return undefined;
7
+ }
4
8
  return dateToInteger(dateStringToDate(dateString));
5
9
  }
@@ -1,12 +1,16 @@
1
1
  import { dateStringToDate } from './dateStringToDate.js'
2
- import type { DateString } from './dateTimeTypes.js'
3
2
  import { dateToInteger } from './dateToInteger.js'
3
+ import { isValidDateString } from './isValidDateString.js'
4
4
 
5
5
  /**
6
6
  * Formats a date string as a number.
7
- * @param {DateString} dateString - A date formatted as a string (ex. '2024-12-31')
7
+ * @param {string} dateString - A date formatted as a string (ex. '2024-12-31')
8
8
  * @returns {number} - A number representing a date.
9
9
  */
10
- export function dateStringToInteger(dateString: DateString): number {
10
+ export function dateStringToInteger(dateString: string): number | undefined {
11
+ if (!isValidDateString(dateString)) {
12
+ return undefined
13
+ }
14
+
11
15
  return dateToInteger(dateStringToDate(dateString))
12
16
  }
@@ -1 +1,3 @@
1
+ export declare function dateToInteger<T extends Date | undefined>(dateObject: T): number | undefined;
1
2
  export declare function dateToInteger(dateObject: Date): number;
3
+ export declare function dateToInteger(dateObject: undefined): undefined;
package/dateToInteger.js CHANGED
@@ -1,4 +1,7 @@
1
1
  export function dateToInteger(dateObject) {
2
+ if (dateObject === undefined) {
3
+ return undefined;
4
+ }
2
5
  return (dateObject.getFullYear() * 10000 +
3
6
  (dateObject.getMonth() + 1) * 100 +
4
7
  dateObject.getDate());
package/dateToInteger.ts CHANGED
@@ -1,9 +1,20 @@
1
+ export function dateToInteger<T extends Date | undefined>(dateObject: T): number | undefined
2
+
3
+ export function dateToInteger(dateObject: Date): number
4
+ export function dateToInteger(dateObject: undefined): undefined
5
+
1
6
  /**
2
7
  * Formats a JavaScript Date object as a number.
3
8
  * @param {Date} dateObject - A JavaScript Date object.
4
9
  * @returns {number} - A number representing the date.
5
10
  */
6
- export function dateToInteger(dateObject: Date): number {
11
+ export function dateToInteger(
12
+ dateObject: Date | undefined
13
+ ): number | undefined {
14
+ if (dateObject === undefined) {
15
+ return undefined
16
+ }
17
+
7
18
  return (
8
19
  dateObject.getFullYear() * 10_000 +
9
20
  (dateObject.getMonth() + 1) * 100 +
package/dateToString.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  import type { DateString } from './dateTimeTypes.js';
2
+ export declare function dateToString<D extends Date | undefined>(dateObject: D): DateString | '';
2
3
  export declare function dateToString(dateObject: Date): DateString;
4
+ export declare function dateToString(dateObject: undefined): '';
package/dateToString.js CHANGED
@@ -1,4 +1,7 @@
1
1
  export function dateToString(dateObject) {
2
+ if (dateObject === undefined) {
3
+ return '';
4
+ }
2
5
  return Intl.DateTimeFormat('fr-CA', {
3
6
  year: 'numeric',
4
7
  month: '2-digit',
package/dateToString.ts CHANGED
@@ -1,11 +1,22 @@
1
1
  import type { DateString } from './dateTimeTypes.js'
2
2
 
3
+ export function dateToString<D extends Date | undefined>(
4
+ dateObject: D
5
+ ): DateString | ''
6
+
7
+ export function dateToString(dateObject: Date): DateString
8
+ export function dateToString(dateObject: undefined): ''
9
+
3
10
  /**
4
11
  * Formats a JavaScript Date object as a date string.
5
12
  * @param {Date} dateObject - A JavaScript Date object
6
13
  * @returns {DateString} A date string.
7
14
  */
8
- export function dateToString(dateObject: Date): DateString {
15
+ export function dateToString(dateObject: Date | undefined): DateString | '' {
16
+ if (dateObject === undefined) {
17
+ return ''
18
+ }
19
+
9
20
  return Intl.DateTimeFormat('fr-CA', {
10
21
  year: 'numeric',
11
22
  month: '2-digit',
@@ -1 +1,3 @@
1
+ export declare function dateToTimeInteger<D extends Date | undefined>(dateObject: D): number | undefined;
1
2
  export declare function dateToTimeInteger(dateObject: Date): number;
3
+ export declare function dateToTimeInteger(dateObject: undefined): undefined;
@@ -1,3 +1,6 @@
1
1
  export function dateToTimeInteger(dateObject) {
2
+ if (dateObject === undefined) {
3
+ return undefined;
4
+ }
2
5
  return dateObject.getHours() * 100 + dateObject.getMinutes();
3
6
  }
@@ -1,8 +1,21 @@
1
+ export function dateToTimeInteger<D extends Date | undefined>(
2
+ dateObject: D
3
+ ): number | undefined
4
+
5
+ export function dateToTimeInteger(dateObject: Date): number
6
+ export function dateToTimeInteger(dateObject: undefined): undefined
7
+
1
8
  /**
2
9
  * Formats the time in a JavaScript Date as a number.
3
- * @param {Date} dateObject - A JavaString Date object.
10
+ * @param {Date} dateObject - A JavaScript Date object.
4
11
  * @returns {number} - A number representing a time.
5
12
  */
6
- export function dateToTimeInteger(dateObject: Date): number {
13
+ export function dateToTimeInteger(
14
+ dateObject: Date | undefined
15
+ ): number | undefined {
16
+ if (dateObject === undefined) {
17
+ return undefined
18
+ }
19
+
7
20
  return dateObject.getHours() * 100 + dateObject.getMinutes()
8
21
  }
@@ -1,2 +1,4 @@
1
1
  import type { TimePeriodString } from './dateTimeTypes.js';
2
+ export declare function dateToTimePeriodString<D extends Date | undefined>(dateObject: D): TimePeriodString | '';
2
3
  export declare function dateToTimePeriodString(dateObject: Date): TimePeriodString;
4
+ export declare function dateToTimePeriodString(dateObject: undefined): '';
@@ -1,4 +1,7 @@
1
1
  export function dateToTimePeriodString(dateObject) {
2
+ if (dateObject === undefined) {
3
+ return '';
4
+ }
2
5
  return Intl.DateTimeFormat('en-CA', {
3
6
  hourCycle: 'h12',
4
7
  hour: 'numeric',
@@ -1,11 +1,24 @@
1
1
  import type { TimePeriodString } from './dateTimeTypes.js'
2
2
 
3
+ export function dateToTimePeriodString<D extends Date | undefined>(
4
+ dateObject: D
5
+ ): TimePeriodString | ''
6
+
7
+ export function dateToTimePeriodString(dateObject: Date): TimePeriodString
8
+ export function dateToTimePeriodString(dateObject: undefined): ''
9
+
3
10
  /**
4
11
  * Formats a JavaScript Date as a time period string.
5
12
  * @param {Date} dateObject - A JavaScript Date object.
6
13
  * @returns {TimePeriodString} - A time string formatted with the time period (ex. 1:23 a.m.)
7
14
  */
8
- export function dateToTimePeriodString(dateObject: Date): TimePeriodString {
15
+ export function dateToTimePeriodString(
16
+ dateObject: Date | undefined
17
+ ): TimePeriodString | '' {
18
+ if (dateObject === undefined) {
19
+ return ''
20
+ }
21
+
9
22
  return Intl.DateTimeFormat('en-CA', {
10
23
  hourCycle: 'h12',
11
24
  hour: 'numeric',
@@ -1,2 +1,4 @@
1
1
  import type { TimeString } from './dateTimeTypes.js';
2
+ export declare function dateToTimeString<D extends Date | undefined>(dateObject: D): TimeString | '';
2
3
  export declare function dateToTimeString(dateObject: Date): TimeString;
4
+ export declare function dateToTimeString(dateObject: undefined): '';
@@ -1,4 +1,7 @@
1
1
  export function dateToTimeString(dateObject) {
2
+ if (dateObject === undefined) {
3
+ return '';
4
+ }
2
5
  return Intl.DateTimeFormat('en-CA', {
3
6
  hourCycle: 'h24',
4
7
  hour: '2-digit',
@@ -1,11 +1,24 @@
1
1
  import type { TimeString } from './dateTimeTypes.js'
2
2
 
3
+ export function dateToTimeString<D extends Date | undefined>(
4
+ dateObject: D
5
+ ): TimeString | ''
6
+
7
+ export function dateToTimeString(dateObject: Date): TimeString
8
+ export function dateToTimeString(dateObject: undefined): ''
9
+
3
10
  /**
4
11
  * Formats a JavaScript Date object as a time string.
5
12
  * @param {Date} dateObject - A JavaScript Date object.
6
13
  * @returns {TimeString} - A string representing the time.
7
14
  */
8
- export function dateToTimeString(dateObject: Date): TimeString {
15
+ export function dateToTimeString(
16
+ dateObject: Date | undefined
17
+ ): TimeString | '' {
18
+ if (dateObject === undefined) {
19
+ return ''
20
+ }
21
+
9
22
  return Intl.DateTimeFormat('en-CA', {
10
23
  hourCycle: 'h24',
11
24
  hour: '2-digit',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cityssm/utils-datetime",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Date time utilities for Node.js applications",
5
5
  "keywords": [
6
6
  "date",
@@ -1,2 +1,2 @@
1
1
  import type { TimePeriodString } from './dateTimeTypes.js';
2
- export declare function timeIntegerToPeriodString(timeInteger: number): TimePeriodString;
2
+ export declare function timeIntegerToPeriodString(timeInteger?: number): TimePeriodString | '';
@@ -1,5 +1,5 @@
1
1
  import { dateIntegerToDate } from './dateIntegerToDate.js';
2
2
  import { dateToTimePeriodString } from './dateToTimePeriodString.js';
3
- export function timeIntegerToPeriodString(timeInteger) {
3
+ export function timeIntegerToPeriodString(timeInteger = 0) {
4
4
  return dateToTimePeriodString(dateIntegerToDate(19700101, timeInteger));
5
5
  }
@@ -8,8 +8,8 @@ import { dateToTimePeriodString } from './dateToTimePeriodString.js'
8
8
  * @returns {TimePeriodString} - A string representing a time.
9
9
  */
10
10
  export function timeIntegerToPeriodString(
11
- timeInteger: number
12
- ): TimePeriodString {
11
+ timeInteger: number = 0
12
+ ): TimePeriodString | '' {
13
13
  // eslint-disable-next-line unicorn/numeric-separators-style
14
14
  return dateToTimePeriodString(dateIntegerToDate(19700101, timeInteger))
15
15
  }
@@ -1,2 +1 @@
1
- import type { TimeString } from './dateTimeTypes.js';
2
- export declare function timeStringToInteger(timeString: TimeString): number;
1
+ export declare function timeStringToInteger(timeString: string): number | undefined;
@@ -1,3 +1,7 @@
1
+ import { isValidTimeString } from './isValidTimeString.js';
1
2
  export function timeStringToInteger(timeString) {
3
+ if (!isValidTimeString(timeString)) {
4
+ return undefined;
5
+ }
2
6
  return Number.parseInt(`0${timeString}`.replaceAll(':', ''), 10);
3
7
  }
@@ -1,10 +1,14 @@
1
- import type { TimeString } from './dateTimeTypes.js'
1
+ import { isValidTimeString } from './isValidTimeString.js'
2
2
 
3
3
  /**
4
4
  * Formats a string representing a time as a number.
5
- * @param {TimeString} timeString - A string representing a time.
5
+ * @param {string} timeString - A string representing a time.
6
6
  * @returns {number} - A number representing a time.
7
7
  */
8
- export function timeStringToInteger(timeString: TimeString): number {
8
+ export function timeStringToInteger(timeString: string): number | undefined {
9
+ if (!isValidTimeString(timeString)) {
10
+ return undefined
11
+ }
12
+
9
13
  return Number.parseInt(`0${timeString}`.replaceAll(':', ''), 10)
10
14
  }