date-vir 8.6.1 → 8.6.3
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 +13 -13
- package/dist/date-operations/calculate-relative-date.d.ts +2 -1
- package/dist/date-operations/combine-dates.d.ts +9 -8
- package/dist/date-operations/combine-dates.js +3 -1
- package/dist/date-operations/date-position.d.ts +3 -2
- package/dist/date-operations/diff-dates.d.ts +4 -4
- package/dist/date-operations/diff-dates.js +4 -4
- package/dist/extra-utils/has-date-props.d.ts +3 -2
- package/dist/extra-utils/js-date-conversion.d.ts +2 -2
- package/dist/extra-utils/js-date-conversion.js +2 -2
- package/dist/extra-utils/now.d.ts +4 -4
- package/dist/extra-utils/now.js +2 -2
- package/dist/extra-utils/override-date.d.ts +5 -4
- package/dist/extra-utils/override-date.js +3 -3
- package/dist/extra-utils/zero.d.ts +9 -8
- package/dist/extra-utils/zero.js +6 -6
- package/dist/formatting/formatted-string.js +1 -0
- package/dist/formatting/relative-string.js +3 -1
- package/dist/formatting/simple-strings.d.ts +7 -6
- package/dist/formatting/simple-strings.js +1 -1
- package/dist/formatting/timestamp.d.ts +6 -6
- package/dist/formatting/timestamp.js +6 -6
- package/dist/full-date/create-full-date.d.ts +10 -10
- package/dist/full-date/create-full-date.js +7 -7
- package/dist/full-date/date-like.d.ts +2 -1
- package/dist/full-date/full-date-shape.d.ts +10 -9
- package/dist/full-date/is-valid-full-date.d.ts +2 -1
- package/dist/full-date/luxon-date-time-conversion.d.ts +2 -1
- package/dist/full-date/luxon-date-time-conversion.js +7 -2
- package/dist/full-date/maybe-create-date.d.ts +2 -1
- package/dist/full-date/parsing.d.ts +3 -2
- package/dist/full-date/string-parsing.d.ts +2 -1
- package/dist/timezone/timezone-checks.d.ts +15 -2
- package/dist/timezone/timezone-checks.js +25 -8
- package/dist/timezone/timezone-shape.d.ts +4 -3
- package/dist/timezone/timezone-shape.js +2 -2
- package/dist/timezone/timezones.d.ts +21 -8
- package/dist/timezone/timezones.js +6 -5
- package/package.json +17 -16
package/README.md
CHANGED
|
@@ -37,24 +37,24 @@ import {
|
|
|
37
37
|
getNowFullDate,
|
|
38
38
|
parseDateStringWithPattern,
|
|
39
39
|
parseInputElementValue,
|
|
40
|
-
|
|
40
|
+
TimezoneName,
|
|
41
41
|
} from 'date-vir';
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Creates a FullDate from a wide range of possible inputs. See TypeScript types for full details on
|
|
45
45
|
* available inputs.
|
|
46
46
|
*/
|
|
47
|
-
createFullDate('2023-06-05',
|
|
47
|
+
createFullDate('2023-06-05', TimezoneName['Europe/Rome']);
|
|
48
48
|
|
|
49
49
|
/** Get the current date and time right now in the given timezone. */
|
|
50
|
-
getNowFullDate(
|
|
50
|
+
getNowFullDate(TimezoneName['America/Argentina/Buenos_Aires']);
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Parsed the value of an <input> element directly from the element itself. This is intended to be
|
|
54
54
|
* used for type="date" or type="time" <input> elements, but any input element with a valid date or
|
|
55
55
|
* time string will work.
|
|
56
56
|
*/
|
|
57
|
-
parseInputElementValue(document.querySelector('input'),
|
|
57
|
+
parseInputElementValue(document.querySelector('input'), TimezoneName['Asia/Tokyo']);
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* If you have a really oddly formatted date/time string and createFullDate does not suffice, you
|
|
@@ -65,7 +65,7 @@ parseInputElementValue(document.querySelector('input'), Timezone['Asia/Tokyo']);
|
|
|
65
65
|
parseDateStringWithPattern({
|
|
66
66
|
dateString: '870-0-14-19 5 2023 6',
|
|
67
67
|
formatString: 'S-s-h-m d yyyy M',
|
|
68
|
-
timezone:
|
|
68
|
+
timezone: TimezoneName['America/Cancun'],
|
|
69
69
|
});
|
|
70
70
|
```
|
|
71
71
|
|
|
@@ -80,14 +80,14 @@ import {
|
|
|
80
80
|
createFullDate,
|
|
81
81
|
formatPresets,
|
|
82
82
|
FullDatePart,
|
|
83
|
-
|
|
83
|
+
TimezoneName,
|
|
84
84
|
toHtmlInputString,
|
|
85
85
|
toLocaleString,
|
|
86
86
|
toTimestamp,
|
|
87
87
|
toUtcIsoString,
|
|
88
88
|
} from 'date-vir';
|
|
89
89
|
|
|
90
|
-
const myFullDate = createFullDate('2023-06-05T14:19:00.870Z',
|
|
90
|
+
const myFullDate = createFullDate('2023-06-05T14:19:00.870Z', TimezoneName['America/Chicago']);
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
93
|
* Converts the given FullDate into a UTC unix timestamp with milliseconds. Since the output is a
|
|
@@ -123,11 +123,11 @@ toHtmlInputString(myFullDate, FullDatePart.Date); // returns '2023-06-05'
|
|
|
123
123
|
<!-- example-link: src/readme-examples/timezones.example.ts -->
|
|
124
124
|
|
|
125
125
|
```TypeScript
|
|
126
|
-
import {
|
|
126
|
+
import {TimezoneName, userTimezone, utcTimezone} from 'date-vir';
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
TimezoneName['Africa/Abidjan'];
|
|
129
|
+
TimezoneName['America/Los_Angeles'];
|
|
130
|
+
TimezoneName['Etc/GMT+1'];
|
|
131
131
|
|
|
132
132
|
utcTimezone;
|
|
133
133
|
userTimezone;
|
|
@@ -142,9 +142,9 @@ The parsing and timezone conversions in `date-vir` utilize the [`luxon`](https:/
|
|
|
142
142
|
<!-- example-link: src/readme-examples/luxon-conversion.example.ts -->
|
|
143
143
|
|
|
144
144
|
```TypeScript
|
|
145
|
-
import {createFullDate,
|
|
145
|
+
import {createFullDate, TimezoneName, toLuxonDateTime} from 'date-vir';
|
|
146
146
|
|
|
147
|
-
const myFullDate = createFullDate('2023-06-05T14:19:00.870Z',
|
|
147
|
+
const myFullDate = createFullDate('2023-06-05T14:19:00.870Z', TimezoneName['America/Chicago']);
|
|
148
148
|
|
|
149
149
|
toLuxonDateTime(myFullDate);
|
|
150
150
|
```
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AnyDuration } from '@date-vir/duration';
|
|
2
2
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
3
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
3
4
|
/**
|
|
4
5
|
* Calculates a new date starting at the given fullDate and adding the given offsets. Offsets can be
|
|
5
6
|
* negative to go backwards in time.
|
|
@@ -13,4 +14,4 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
13
14
|
* calculateRelativeDate(getNowInUserTimezone(), {days: 2});
|
|
14
15
|
* ```
|
|
15
16
|
*/
|
|
16
|
-
export declare function calculateRelativeDate<const SpecificTimezone extends
|
|
17
|
+
export declare function calculateRelativeDate<const SpecificTimezone extends Timezone>(fullDate: Readonly<FullDate<SpecificTimezone>>, offset: Readonly<AnyDuration>): FullDate<SpecificTimezone>;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type FullDatePart } from '../full-date/full-date-parts.js';
|
|
2
2
|
import { type DatePart, type FullDate, type TimePart } from '../full-date/full-date-shape.js';
|
|
3
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
3
4
|
/**
|
|
4
5
|
* An object containing date and/or time parts or neither. Used for {@link combineDateParts}
|
|
5
6
|
*
|
|
6
7
|
* @category Internal
|
|
7
8
|
*/
|
|
8
|
-
export type MaybeDateParts<SpecificTimezone extends
|
|
9
|
+
export type MaybeDateParts<SpecificTimezone extends Timezone> = Partial<{
|
|
9
10
|
[FullDatePart.Date]: DatePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
|
|
10
11
|
[FullDatePart.Time]: TimePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
|
|
11
12
|
}>;
|
|
@@ -14,8 +15,8 @@ export type MaybeDateParts<SpecificTimezone extends string> = Partial<{
|
|
|
14
15
|
*
|
|
15
16
|
* @category Internal
|
|
16
17
|
*/
|
|
17
|
-
export type MaybeDatePart<SpecificTimezone extends
|
|
18
|
-
export declare function combineDateParts<const SpecificTimezone extends
|
|
18
|
+
export type MaybeDatePart<SpecificTimezone extends Timezone> = FullDate<SpecificTimezone> | Partial<FullDate<SpecificTimezone>> | DatePart<SpecificTimezone> | TimePart<SpecificTimezone> | undefined;
|
|
19
|
+
export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
|
|
19
20
|
[FullDatePart.Date]: DatePart<SpecificTimezone>;
|
|
20
21
|
[FullDatePart.Time]: TimePart<SpecificTimezone>;
|
|
21
22
|
}): FullDate<SpecificTimezone>;
|
|
@@ -23,20 +24,20 @@ export declare function combineDateParts(maybeDateParts: {
|
|
|
23
24
|
[FullDatePart.Date]?: undefined;
|
|
24
25
|
[FullDatePart.Time]?: undefined;
|
|
25
26
|
}): undefined;
|
|
26
|
-
export declare function combineDateParts<const SpecificTimezone extends
|
|
27
|
+
export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
|
|
27
28
|
[FullDatePart.Date]: DatePart<SpecificTimezone>;
|
|
28
29
|
[FullDatePart.Time]?: undefined;
|
|
29
30
|
}): DatePart<SpecificTimezone>;
|
|
30
|
-
export declare function combineDateParts<const SpecificTimezone extends
|
|
31
|
+
export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
|
|
31
32
|
[FullDatePart.Date]: DatePart<SpecificTimezone>;
|
|
32
33
|
[FullDatePart.Time]?: TimePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
|
|
33
34
|
}): FullDate<SpecificTimezone> | DatePart<SpecificTimezone>;
|
|
34
|
-
export declare function combineDateParts<const SpecificTimezone extends
|
|
35
|
+
export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
|
|
35
36
|
[FullDatePart.Date]?: undefined;
|
|
36
37
|
[FullDatePart.Time]: TimePart<SpecificTimezone>;
|
|
37
38
|
}): TimePart<SpecificTimezone>;
|
|
38
|
-
export declare function combineDateParts<const SpecificTimezone extends
|
|
39
|
+
export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: {
|
|
39
40
|
[FullDatePart.Date]?: DatePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>;
|
|
40
41
|
[FullDatePart.Time]: TimePart<SpecificTimezone>;
|
|
41
42
|
}): FullDate<SpecificTimezone> | TimePart<SpecificTimezone>;
|
|
42
|
-
export declare function combineDateParts<const SpecificTimezone extends
|
|
43
|
+
export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: MaybeDateParts<SpecificTimezone>): MaybeDatePart<SpecificTimezone>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DateUnit } from '@date-vir/duration';
|
|
2
2
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
3
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
3
4
|
/**
|
|
4
5
|
* Get the {@link DateUnit} value of a {@link FullDate}.
|
|
5
6
|
*
|
|
@@ -53,7 +54,7 @@ export declare function getDateUnit(date: Readonly<FullDate>, unit: DateUnit): n
|
|
|
53
54
|
* ); // outputs {year: 2024, month: 11, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0, timezone: utcTimezone}
|
|
54
55
|
* ```
|
|
55
56
|
*/
|
|
56
|
-
export declare function getStartDate<const SpecificTimezone extends
|
|
57
|
+
export declare function getStartDate<const SpecificTimezone extends Timezone>(date: Readonly<FullDate<SpecificTimezone>>, unit: DateUnit): FullDate<SpecificTimezone>;
|
|
57
58
|
/**
|
|
58
59
|
* Get the end date of a specific {@link DateUnit} based on a given {@link FullDate}.
|
|
59
60
|
*
|
|
@@ -80,7 +81,7 @@ export declare function getStartDate<const SpecificTimezone extends string>(date
|
|
|
80
81
|
* ); // outputs {year: 2024, month: 11, day: 30, hour: 23, minute: 59, second: 59, millisecond: 999, timezone: utcTimezone}
|
|
81
82
|
* ```
|
|
82
83
|
*/
|
|
83
|
-
export declare function getEndDate<const SpecificTimezone extends
|
|
84
|
+
export declare function getEndDate<const SpecificTimezone extends Timezone>(date: Readonly<FullDate<SpecificTimezone>>, unit: DateUnit): FullDate<SpecificTimezone>;
|
|
84
85
|
/**
|
|
85
86
|
* Shape definition for all valid date position calculations. Used for {@link calculateDatePosition}.
|
|
86
87
|
*
|
|
@@ -13,7 +13,7 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
13
13
|
* @example
|
|
14
14
|
*
|
|
15
15
|
* ```ts
|
|
16
|
-
* import {diffDates, DurationUnit} from 'date-vir';
|
|
16
|
+
* import {diffDates, DurationUnit, utcTimezone} from 'date-vir';
|
|
17
17
|
*
|
|
18
18
|
* const exampleDate: FullDate = {
|
|
19
19
|
* year: 2024,
|
|
@@ -23,7 +23,7 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
23
23
|
* minute: 1,
|
|
24
24
|
* second: 1,
|
|
25
25
|
* millisecond: 1,
|
|
26
|
-
* timezone:
|
|
26
|
+
* timezone: utcTimezone,
|
|
27
27
|
* };
|
|
28
28
|
*
|
|
29
29
|
* // get the diff in days
|
|
@@ -59,7 +59,7 @@ units: SelectedUnits, options?: Readonly<RoundOptions>): DurationBySelection<Sel
|
|
|
59
59
|
* @example
|
|
60
60
|
*
|
|
61
61
|
* ```ts
|
|
62
|
-
* import {isDateAfter, type FullDate} from 'date-vir';
|
|
62
|
+
* import {isDateAfter, type FullDate, utcTimezone} from 'date-vir';
|
|
63
63
|
*
|
|
64
64
|
* const exampleDate: FullDate = {
|
|
65
65
|
* year: 2024,
|
|
@@ -69,7 +69,7 @@ units: SelectedUnits, options?: Readonly<RoundOptions>): DurationBySelection<Sel
|
|
|
69
69
|
* minute: 1,
|
|
70
70
|
* second: 1,
|
|
71
71
|
* millisecond: 1,
|
|
72
|
-
* timezone:
|
|
72
|
+
* timezone: utcTimezone,
|
|
73
73
|
* };
|
|
74
74
|
*
|
|
75
75
|
* isDateAfter({
|
|
@@ -31,7 +31,7 @@ function getHighestPriorityConversionAccuracy(units) {
|
|
|
31
31
|
* @example
|
|
32
32
|
*
|
|
33
33
|
* ```ts
|
|
34
|
-
* import {diffDates, DurationUnit} from 'date-vir';
|
|
34
|
+
* import {diffDates, DurationUnit, utcTimezone} from 'date-vir';
|
|
35
35
|
*
|
|
36
36
|
* const exampleDate: FullDate = {
|
|
37
37
|
* year: 2024,
|
|
@@ -41,7 +41,7 @@ function getHighestPriorityConversionAccuracy(units) {
|
|
|
41
41
|
* minute: 1,
|
|
42
42
|
* second: 1,
|
|
43
43
|
* millisecond: 1,
|
|
44
|
-
* timezone:
|
|
44
|
+
* timezone: utcTimezone,
|
|
45
45
|
* };
|
|
46
46
|
*
|
|
47
47
|
* // get the diff in days
|
|
@@ -85,7 +85,7 @@ units, options = {}) {
|
|
|
85
85
|
* @example
|
|
86
86
|
*
|
|
87
87
|
* ```ts
|
|
88
|
-
* import {isDateAfter, type FullDate} from 'date-vir';
|
|
88
|
+
* import {isDateAfter, type FullDate, utcTimezone} from 'date-vir';
|
|
89
89
|
*
|
|
90
90
|
* const exampleDate: FullDate = {
|
|
91
91
|
* year: 2024,
|
|
@@ -95,7 +95,7 @@ units, options = {}) {
|
|
|
95
95
|
* minute: 1,
|
|
96
96
|
* second: 1,
|
|
97
97
|
* millisecond: 1,
|
|
98
|
-
* timezone:
|
|
98
|
+
* timezone: utcTimezone,
|
|
99
99
|
* };
|
|
100
100
|
*
|
|
101
101
|
* isDateAfter({
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type PartialWithUndefined, type SetRequiredAndNotNull } from '@augment-vir/common';
|
|
2
2
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
3
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
3
4
|
/**
|
|
4
5
|
* Checks that the input has all the requested {@link FullDate} keys.
|
|
5
6
|
*
|
|
@@ -13,7 +14,7 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
13
14
|
* hasFullDateKeys({year: 2024}, ['day']); // `false`
|
|
14
15
|
* ```
|
|
15
16
|
*/
|
|
16
|
-
export declare function hasFullDateKeys<SpecificTimezone extends
|
|
17
|
+
export declare function hasFullDateKeys<SpecificTimezone extends Timezone, PartialFullDate extends PartialWithUndefined<FullDate<SpecificTimezone>>,
|
|
17
18
|
/** A union of strings. */
|
|
18
19
|
RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialWithUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeys>): partialFullDate is SetRequiredAndNotNull<PartialFullDate, RequiredKeys>;
|
|
19
20
|
/**
|
|
@@ -29,6 +30,6 @@ RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialW
|
|
|
29
30
|
* assertHasFullDateKeys({year: 2024}, ['day']); // fails
|
|
30
31
|
* ```
|
|
31
32
|
*/
|
|
32
|
-
export declare function assertHasFullDateKeys<SpecificTimezone extends
|
|
33
|
+
export declare function assertHasFullDateKeys<SpecificTimezone extends Timezone, PartialFullDate extends PartialWithUndefined<FullDate<SpecificTimezone>>,
|
|
33
34
|
/** A union of strings. */
|
|
34
35
|
RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialWithUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeys>): asserts partialFullDate is SetRequiredAndNotNull<PartialFullDate, RequiredKeys>;
|
|
@@ -7,7 +7,7 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
7
7
|
* @example
|
|
8
8
|
*
|
|
9
9
|
* ```ts
|
|
10
|
-
* import {toJsDate, type FullDate} from 'date-vir';
|
|
10
|
+
* import {toJsDate, type FullDate, utcTimezone} from 'date-vir';
|
|
11
11
|
*
|
|
12
12
|
* const exampleDate: Readonly<FullDate> = {
|
|
13
13
|
* year: 2024,
|
|
@@ -17,7 +17,7 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
17
17
|
* minute: 1,
|
|
18
18
|
* second: 1,
|
|
19
19
|
* millisecond: 1,
|
|
20
|
-
* timezone:
|
|
20
|
+
* timezone: utcTimezone,
|
|
21
21
|
* };
|
|
22
22
|
*
|
|
23
23
|
* toJsDate(exampleDate);
|
|
@@ -8,7 +8,7 @@ import { userTimezone } from '../timezone/timezones.js';
|
|
|
8
8
|
* @example
|
|
9
9
|
*
|
|
10
10
|
* ```ts
|
|
11
|
-
* import {toJsDate, type FullDate} from 'date-vir';
|
|
11
|
+
* import {toJsDate, type FullDate, utcTimezone} from 'date-vir';
|
|
12
12
|
*
|
|
13
13
|
* const exampleDate: Readonly<FullDate> = {
|
|
14
14
|
* year: 2024,
|
|
@@ -18,7 +18,7 @@ import { userTimezone } from '../timezone/timezones.js';
|
|
|
18
18
|
* minute: 1,
|
|
19
19
|
* second: 1,
|
|
20
20
|
* millisecond: 1,
|
|
21
|
-
* timezone:
|
|
21
|
+
* timezone: utcTimezone,
|
|
22
22
|
* };
|
|
23
23
|
*
|
|
24
24
|
* toJsDate(exampleDate);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type UtcIsoString } from '../formatting/string-format-types.js';
|
|
2
2
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
3
|
-
import { type UtcTimezone } from '../timezone/timezones.js';
|
|
3
|
+
import { type Timezone, type UtcTimezone } from '../timezone/timezones.js';
|
|
4
4
|
/**
|
|
5
5
|
* Get the time right now as a UTC ISO.
|
|
6
6
|
*
|
|
@@ -47,10 +47,10 @@ export declare function getNowInUtcTimezone(): FullDate<UtcTimezone>;
|
|
|
47
47
|
* @example
|
|
48
48
|
*
|
|
49
49
|
* ```ts
|
|
50
|
-
* import {getNowFullDate,
|
|
50
|
+
* import {getNowFullDate, TimezoneName, utcTimezone} from 'date-vir';
|
|
51
51
|
*
|
|
52
52
|
* getNowFullDate(utcTimezone);
|
|
53
|
-
* getNowFullDate(
|
|
53
|
+
* getNowFullDate(TimezoneName['Australia/Brisbane']);
|
|
54
54
|
* ```
|
|
55
55
|
*/
|
|
56
|
-
export declare function getNowFullDate<const SpecificTimezone extends
|
|
56
|
+
export declare function getNowFullDate<const SpecificTimezone extends Timezone>(timezone: SpecificTimezone): FullDate<SpecificTimezone>;
|
package/dist/extra-utils/now.js
CHANGED
|
@@ -57,10 +57,10 @@ export function getNowInUtcTimezone() {
|
|
|
57
57
|
* @example
|
|
58
58
|
*
|
|
59
59
|
* ```ts
|
|
60
|
-
* import {getNowFullDate,
|
|
60
|
+
* import {getNowFullDate, TimezoneName, utcTimezone} from 'date-vir';
|
|
61
61
|
*
|
|
62
62
|
* getNowFullDate(utcTimezone);
|
|
63
|
-
* getNowFullDate(
|
|
63
|
+
* getNowFullDate(TimezoneName['Australia/Brisbane']);
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
66
|
export function getNowFullDate(timezone) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
2
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
2
3
|
/**
|
|
3
4
|
* Override the initial provided FullDate with all subsequent FullDate parts.
|
|
4
5
|
*
|
|
@@ -6,7 +7,7 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
6
7
|
* @example
|
|
7
8
|
*
|
|
8
9
|
* ```ts
|
|
9
|
-
* import {overrideDateParts, type FullDate} from 'date-vir';
|
|
10
|
+
* import {overrideDateParts, type FullDate, utcTimezone} from 'date-vir';
|
|
10
11
|
*
|
|
11
12
|
* const exampleDate: Readonly<FullDate> = {
|
|
12
13
|
* year: 2024,
|
|
@@ -16,11 +17,11 @@ import { type FullDate } from '../full-date/full-date-shape.js';
|
|
|
16
17
|
* minute: 1,
|
|
17
18
|
* second: 1,
|
|
18
19
|
* millisecond: 1,
|
|
19
|
-
* timezone:
|
|
20
|
+
* timezone: utcTimezone,
|
|
20
21
|
* };
|
|
21
22
|
*
|
|
22
23
|
* overrideDateParts(exampleDate, {day: 20}, {second: 10});
|
|
23
|
-
* // `{year: 2024, month: 1, day: 20, hour: 1, minute: 1, second: 10, millisecond: 1, timezone:
|
|
24
|
+
* // `{year: 2024, month: 1, day: 20, hour: 1, minute: 1, second: 10, millisecond: 1, timezone: utcTimezone}`
|
|
24
25
|
* ```
|
|
25
26
|
*/
|
|
26
|
-
export declare function overrideDateParts<const SpecificTimezone extends
|
|
27
|
+
export declare function overrideDateParts<const SpecificTimezone extends Timezone>(date: FullDate<SpecificTimezone>, ...overrides: Partial<FullDate<SpecificTimezone>>[]): FullDate<SpecificTimezone>;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @example
|
|
6
6
|
*
|
|
7
7
|
* ```ts
|
|
8
|
-
* import {overrideDateParts, type FullDate} from 'date-vir';
|
|
8
|
+
* import {overrideDateParts, type FullDate, utcTimezone} from 'date-vir';
|
|
9
9
|
*
|
|
10
10
|
* const exampleDate: Readonly<FullDate> = {
|
|
11
11
|
* year: 2024,
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
* minute: 1,
|
|
16
16
|
* second: 1,
|
|
17
17
|
* millisecond: 1,
|
|
18
|
-
* timezone:
|
|
18
|
+
* timezone: utcTimezone,
|
|
19
19
|
* };
|
|
20
20
|
*
|
|
21
21
|
* overrideDateParts(exampleDate, {day: 20}, {second: 10});
|
|
22
|
-
* // `{year: 2024, month: 1, day: 20, hour: 1, minute: 1, second: 10, millisecond: 1, timezone:
|
|
22
|
+
* // `{year: 2024, month: 1, day: 20, hour: 1, minute: 1, second: 10, millisecond: 1, timezone: utcTimezone}`
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
export function overrideDateParts(date, ...overrides) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TimeKey } from '../full-date/full-date-parts.js';
|
|
2
2
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
3
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
3
4
|
/**
|
|
4
5
|
* A {@link FullDate} instance that has the lowest, valid, non-negative, value for each property.
|
|
5
6
|
*
|
|
@@ -50,7 +51,7 @@ export declare const zeroTime: Pick<{
|
|
|
50
51
|
* @example
|
|
51
52
|
*
|
|
52
53
|
* ```ts
|
|
53
|
-
* import {clearTime, type FullDate} from 'date-vir';
|
|
54
|
+
* import {clearTime, type FullDate, utcTimezone} from 'date-vir';
|
|
54
55
|
*
|
|
55
56
|
* const exampleDate: Readonly<FullDate> = {
|
|
56
57
|
* year: 2024,
|
|
@@ -60,14 +61,14 @@ export declare const zeroTime: Pick<{
|
|
|
60
61
|
* minute: 1,
|
|
61
62
|
* second: 1,
|
|
62
63
|
* millisecond: 1,
|
|
63
|
-
* timezone:
|
|
64
|
+
* timezone: utcTimezone,
|
|
64
65
|
* };
|
|
65
66
|
*
|
|
66
67
|
* clearTime(exampleDate);
|
|
67
|
-
* // `{year: 2024, month: 1, day: 5, hour: 0, minute: 0, second: 0, millisecond: 0, timezone:
|
|
68
|
+
* // `{year: 2024, month: 1, day: 5, hour: 0, minute: 0, second: 0, millisecond: 0, timezone: utcTimezone}`
|
|
68
69
|
* ```
|
|
69
70
|
*/
|
|
70
|
-
export declare function clearTime<const SpecificTimezone extends
|
|
71
|
+
export declare function clearTime<const SpecificTimezone extends Timezone>(inputFullDate: Readonly<FullDate<SpecificTimezone>>): FullDate<SpecificTimezone>;
|
|
71
72
|
/**
|
|
72
73
|
* Clear all the selected parts of {@link FullDate} by setting them each to their lowest, valid
|
|
73
74
|
* value. See {@link zeroDate} for the lowest valid values for each property.
|
|
@@ -76,7 +77,7 @@ export declare function clearTime<const SpecificTimezone extends string>(inputFu
|
|
|
76
77
|
* @example
|
|
77
78
|
*
|
|
78
79
|
* ```ts
|
|
79
|
-
* import {clearTime, type FullDate} from 'date-vir';
|
|
80
|
+
* import {clearTime, type FullDate, utcTimezone} from 'date-vir';
|
|
80
81
|
*
|
|
81
82
|
* const exampleDate: Readonly<FullDate> = {
|
|
82
83
|
* year: 2024,
|
|
@@ -86,17 +87,17 @@ export declare function clearTime<const SpecificTimezone extends string>(inputFu
|
|
|
86
87
|
* minute: 1,
|
|
87
88
|
* second: 1,
|
|
88
89
|
* millisecond: 1,
|
|
89
|
-
* timezone:
|
|
90
|
+
* timezone: utcTimezone,
|
|
90
91
|
* };
|
|
91
92
|
*
|
|
92
93
|
* clearParts(exampleDate, [
|
|
93
94
|
* 'year',
|
|
94
95
|
* 'day',
|
|
95
96
|
* ]);
|
|
96
|
-
* // `{year: 0, month: 1, day: 1, hour: 1, minute: 1, second: 1, millisecond: 1, timezone:
|
|
97
|
+
* // `{year: 0, month: 1, day: 1, hour: 1, minute: 1, second: 1, millisecond: 1, timezone: utcTimezone}`
|
|
97
98
|
* ```
|
|
98
99
|
*/
|
|
99
|
-
export declare function clearParts<const SpecificTimezone extends
|
|
100
|
+
export declare function clearParts<const SpecificTimezone extends Timezone>(inputFullDate: Readonly<FullDate<SpecificTimezone>>, parts: ReadonlyArray<Exclude<keyof FullDate, 'timezone'>>): {
|
|
100
101
|
year: number;
|
|
101
102
|
month: import("@date-vir/duration").MonthNumber;
|
|
102
103
|
day: import("@date-vir/duration").DayOfMonth;
|
package/dist/extra-utils/zero.js
CHANGED
|
@@ -35,7 +35,7 @@ export const zeroTime = pickObjectKeys(zeroDate, getEnumValues(TimeKey));
|
|
|
35
35
|
* @example
|
|
36
36
|
*
|
|
37
37
|
* ```ts
|
|
38
|
-
* import {clearTime, type FullDate} from 'date-vir';
|
|
38
|
+
* import {clearTime, type FullDate, utcTimezone} from 'date-vir';
|
|
39
39
|
*
|
|
40
40
|
* const exampleDate: Readonly<FullDate> = {
|
|
41
41
|
* year: 2024,
|
|
@@ -45,11 +45,11 @@ export const zeroTime = pickObjectKeys(zeroDate, getEnumValues(TimeKey));
|
|
|
45
45
|
* minute: 1,
|
|
46
46
|
* second: 1,
|
|
47
47
|
* millisecond: 1,
|
|
48
|
-
* timezone:
|
|
48
|
+
* timezone: utcTimezone,
|
|
49
49
|
* };
|
|
50
50
|
*
|
|
51
51
|
* clearTime(exampleDate);
|
|
52
|
-
* // `{year: 2024, month: 1, day: 5, hour: 0, minute: 0, second: 0, millisecond: 0, timezone:
|
|
52
|
+
* // `{year: 2024, month: 1, day: 5, hour: 0, minute: 0, second: 0, millisecond: 0, timezone: utcTimezone}`
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
55
|
export function clearTime(inputFullDate) {
|
|
@@ -63,7 +63,7 @@ export function clearTime(inputFullDate) {
|
|
|
63
63
|
* @example
|
|
64
64
|
*
|
|
65
65
|
* ```ts
|
|
66
|
-
* import {clearTime, type FullDate} from 'date-vir';
|
|
66
|
+
* import {clearTime, type FullDate, utcTimezone} from 'date-vir';
|
|
67
67
|
*
|
|
68
68
|
* const exampleDate: Readonly<FullDate> = {
|
|
69
69
|
* year: 2024,
|
|
@@ -73,14 +73,14 @@ export function clearTime(inputFullDate) {
|
|
|
73
73
|
* minute: 1,
|
|
74
74
|
* second: 1,
|
|
75
75
|
* millisecond: 1,
|
|
76
|
-
* timezone:
|
|
76
|
+
* timezone: utcTimezone,
|
|
77
77
|
* };
|
|
78
78
|
*
|
|
79
79
|
* clearParts(exampleDate, [
|
|
80
80
|
* 'year',
|
|
81
81
|
* 'day',
|
|
82
82
|
* ]);
|
|
83
|
-
* // `{year: 0, month: 1, day: 1, hour: 1, minute: 1, second: 1, millisecond: 1, timezone:
|
|
83
|
+
* // `{year: 0, month: 1, day: 1, hour: 1, minute: 1, second: 1, millisecond: 1, timezone: utcTimezone}`
|
|
84
84
|
* ```
|
|
85
85
|
*/
|
|
86
86
|
export function clearParts(inputFullDate, parts) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type SetOptionalAndNullable } from '@augment-vir/common';
|
|
2
2
|
import { type FullDate } from '../full-date/full-date-shape.js';
|
|
3
|
+
import { type Timezone } from '../timezone/timezones.js';
|
|
3
4
|
import { type JustDateString, type JustTimeString, type JustTimeWithSecondsString } from './string-format-types.js';
|
|
4
5
|
/**
|
|
5
6
|
* Create a string based on just the date parts of a FullDate.
|
|
@@ -57,7 +58,7 @@ export type FullDateForParts = SetOptionalAndNullable<FullDate, 'millisecond'>;
|
|
|
57
58
|
* result = {
|
|
58
59
|
* date: '2024-04-24',
|
|
59
60
|
* time: '06:04:09',
|
|
60
|
-
* timezone:
|
|
61
|
+
* timezone: utcTimezone,
|
|
61
62
|
* };
|
|
62
63
|
* ```
|
|
63
64
|
*/
|
|
@@ -66,7 +67,7 @@ export declare function toDatePartStrings(fullDate: FullDateForParts, options: {
|
|
|
66
67
|
}): {
|
|
67
68
|
date: JustDateString;
|
|
68
69
|
time: JustTimeWithSecondsString;
|
|
69
|
-
timezone:
|
|
70
|
+
timezone: Timezone;
|
|
70
71
|
};
|
|
71
72
|
/**
|
|
72
73
|
* Splits a FullDate up into multiple formatted string representations.
|
|
@@ -98,7 +99,7 @@ export declare function toDatePartStrings(fullDate: FullDateForParts, options: {
|
|
|
98
99
|
* result = {
|
|
99
100
|
* date: '2024-04-24',
|
|
100
101
|
* time: '06:04:09',
|
|
101
|
-
* timezone:
|
|
102
|
+
* timezone: utcTimezone,
|
|
102
103
|
* };
|
|
103
104
|
* ```
|
|
104
105
|
*/
|
|
@@ -107,7 +108,7 @@ export declare function toDatePartStrings(fullDate: SetOptionalAndNullable<FullD
|
|
|
107
108
|
}): {
|
|
108
109
|
date: JustDateString;
|
|
109
110
|
time: JustTimeString;
|
|
110
|
-
timezone:
|
|
111
|
+
timezone: Timezone;
|
|
111
112
|
};
|
|
112
113
|
/**
|
|
113
114
|
* Splits a FullDate up into multiple formatted string representations.
|
|
@@ -139,7 +140,7 @@ export declare function toDatePartStrings(fullDate: SetOptionalAndNullable<FullD
|
|
|
139
140
|
* result = {
|
|
140
141
|
* date: '2024-04-24',
|
|
141
142
|
* time: '06:04:09',
|
|
142
|
-
* timezone:
|
|
143
|
+
* timezone: utcTimezone,
|
|
143
144
|
* };
|
|
144
145
|
* ```
|
|
145
146
|
*/
|
|
@@ -148,7 +149,7 @@ export declare function toDatePartStrings(fullDate: FullDateForParts, options: {
|
|
|
148
149
|
}): {
|
|
149
150
|
date: JustDateString;
|
|
150
151
|
time: JustTimeWithSecondsString | JustTimeString;
|
|
151
|
-
timezone:
|
|
152
|
+
timezone: Timezone;
|
|
152
153
|
};
|
|
153
154
|
/**
|
|
154
155
|
* Converts a date into a simple, unambiguous date string.
|
|
@@ -8,7 +8,7 @@ import { type HttpDateString, type UtcIsoString } from './string-format-types.js
|
|
|
8
8
|
* @example
|
|
9
9
|
*
|
|
10
10
|
* ```ts
|
|
11
|
-
* import {toTimestamp} from 'date-vir';
|
|
11
|
+
* import {toTimestamp, utcTimezone} from 'date-vir';
|
|
12
12
|
*
|
|
13
13
|
* const exampleDate: FullDate = {
|
|
14
14
|
* year: 2024,
|
|
@@ -18,7 +18,7 @@ import { type HttpDateString, type UtcIsoString } from './string-format-types.js
|
|
|
18
18
|
* minute: 1,
|
|
19
19
|
* second: 1,
|
|
20
20
|
* millisecond: 1,
|
|
21
|
-
* timezone:
|
|
21
|
+
* timezone: utcTimezone,
|
|
22
22
|
* };
|
|
23
23
|
*
|
|
24
24
|
* toTimestamp(exampleDate); // `1704416461001`
|
|
@@ -37,7 +37,7 @@ export declare function toTimestamp(fullDate: FullDate): number;
|
|
|
37
37
|
* @example
|
|
38
38
|
*
|
|
39
39
|
* ```ts
|
|
40
|
-
* import {toUtcIsoString} from 'date-vir';
|
|
40
|
+
* import {toUtcIsoString, utcTimezone} from 'date-vir';
|
|
41
41
|
*
|
|
42
42
|
* const exampleDate: FullDate = {
|
|
43
43
|
* year: 2024,
|
|
@@ -47,7 +47,7 @@ export declare function toTimestamp(fullDate: FullDate): number;
|
|
|
47
47
|
* minute: 1,
|
|
48
48
|
* second: 1,
|
|
49
49
|
* millisecond: 1,
|
|
50
|
-
* timezone:
|
|
50
|
+
* timezone: utcTimezone,
|
|
51
51
|
* };
|
|
52
52
|
*
|
|
53
53
|
* toUtcIsoString(exampleDate); // `'2024-01-05T01:01:01.001Z'`
|
|
@@ -93,7 +93,7 @@ dateLike: Readonly<DateLike>): UtcIsoString;
|
|
|
93
93
|
* @example
|
|
94
94
|
*
|
|
95
95
|
* ```ts
|
|
96
|
-
* import {toHttpDateString} from 'date-vir';
|
|
96
|
+
* import {toHttpDateString, utcTimezone} from 'date-vir';
|
|
97
97
|
*
|
|
98
98
|
* const exampleDate: FullDate = {
|
|
99
99
|
* year: 2024,
|
|
@@ -103,7 +103,7 @@ dateLike: Readonly<DateLike>): UtcIsoString;
|
|
|
103
103
|
* minute: 1,
|
|
104
104
|
* second: 1,
|
|
105
105
|
* millisecond: 1,
|
|
106
|
-
* timezone:
|
|
106
|
+
* timezone: utcTimezone,
|
|
107
107
|
* };
|
|
108
108
|
*
|
|
109
109
|
* toHttpDateString(exampleDate); // `'Fri, 05 Jan 2024 01:01:01 GMT'`
|