@dereekb/date 0.0.1
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 +7 -0
- package/package.json +19 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +7 -0
- package/src/index.js.map +1 -0
- package/src/lib/date/date.calendar.d.ts +29 -0
- package/src/lib/date/date.calendar.js +54 -0
- package/src/lib/date/date.calendar.js.map +1 -0
- package/src/lib/date/date.d.ts +61 -0
- package/src/lib/date/date.duration.d.ts +9 -0
- package/src/lib/date/date.duration.js +35 -0
- package/src/lib/date/date.duration.js.map +1 -0
- package/src/lib/date/date.format.d.ts +11 -0
- package/src/lib/date/date.format.js +60 -0
- package/src/lib/date/date.format.js.map +1 -0
- package/src/lib/date/date.hashset.d.ts +4 -0
- package/src/lib/date/date.hashset.js +11 -0
- package/src/lib/date/date.hashset.js.map +1 -0
- package/src/lib/date/date.js +131 -0
- package/src/lib/date/date.js.map +1 -0
- package/src/lib/date/date.range.d.ts +107 -0
- package/src/lib/date/date.range.js +222 -0
- package/src/lib/date/date.range.js.map +1 -0
- package/src/lib/date/date.round.d.ts +14 -0
- package/src/lib/date/date.round.js +48 -0
- package/src/lib/date/date.round.js.map +1 -0
- package/src/lib/date/date.sort.d.ts +10 -0
- package/src/lib/date/date.sort.js +25 -0
- package/src/lib/date/date.sort.js.map +1 -0
- package/src/lib/date/date.time.d.ts +82 -0
- package/src/lib/date/date.time.js +208 -0
- package/src/lib/date/date.time.js.map +1 -0
- package/src/lib/date/date.time.limit.d.ts +59 -0
- package/src/lib/date/date.time.limit.js +93 -0
- package/src/lib/date/date.time.limit.js.map +1 -0
- package/src/lib/date/date.time.minute.d.ts +73 -0
- package/src/lib/date/date.time.minute.js +104 -0
- package/src/lib/date/date.time.minute.js.map +1 -0
- package/src/lib/date/date.timezone.d.ts +74 -0
- package/src/lib/date/date.timezone.js +126 -0
- package/src/lib/date/date.timezone.js.map +1 -0
- package/src/lib/date/date.unix.d.ts +6 -0
- package/src/lib/date/date.unix.js +41 -0
- package/src/lib/date/date.unix.js.map +1 -0
- package/src/lib/date/index.d.ts +13 -0
- package/src/lib/date/index.js +17 -0
- package/src/lib/date/index.js.map +1 -0
- package/src/lib/date.request.d.ts +22 -0
- package/src/lib/date.request.js +3 -0
- package/src/lib/date.request.js.map +1 -0
- package/src/lib/expires/expires.d.ts +39 -0
- package/src/lib/expires/expires.js +74 -0
- package/src/lib/expires/expires.js.map +1 -0
- package/src/lib/expires/index.d.ts +1 -0
- package/src/lib/expires/index.js +5 -0
- package/src/lib/expires/index.js.map +1 -0
- package/src/lib/rrule/date.recurrence.d.ts +60 -0
- package/src/lib/rrule/date.recurrence.js +84 -0
- package/src/lib/rrule/date.recurrence.js.map +1 -0
- package/src/lib/rrule/date.rrule.d.ts +125 -0
- package/src/lib/rrule/date.rrule.extension.d.ts +74 -0
- package/src/lib/rrule/date.rrule.extension.js +147 -0
- package/src/lib/rrule/date.rrule.extension.js.map +1 -0
- package/src/lib/rrule/date.rrule.js +180 -0
- package/src/lib/rrule/date.rrule.js.map +1 -0
- package/src/lib/rrule/date.rrule.parse.d.ts +114 -0
- package/src/lib/rrule/date.rrule.parse.js +131 -0
- package/src/lib/rrule/date.rrule.parse.js.map +1 -0
- package/src/lib/rrule/index.d.ts +4 -0
- package/src/lib/rrule/index.js +8 -0
- package/src/lib/rrule/index.js.map +1 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dateRangeState = exports.makeDateRange = exports.DateRangeParams = exports.DateRangeState = exports.DateRangeType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const class_transformer_1 = require("class-transformer");
|
|
6
|
+
const class_validator_1 = require("class-validator");
|
|
7
|
+
const date_fns_1 = require("date-fns");
|
|
8
|
+
var DateRangeType;
|
|
9
|
+
(function (DateRangeType) {
|
|
10
|
+
/**
|
|
11
|
+
* Includes only the target day.
|
|
12
|
+
*/
|
|
13
|
+
DateRangeType["DAY"] = "day";
|
|
14
|
+
/**
|
|
15
|
+
* Includes only the target week.
|
|
16
|
+
*/
|
|
17
|
+
DateRangeType["WEEK"] = "week";
|
|
18
|
+
/**
|
|
19
|
+
* Includes only the target month.
|
|
20
|
+
*/
|
|
21
|
+
DateRangeType["MONTH"] = "month";
|
|
22
|
+
/**
|
|
23
|
+
* Range specified in hours with the input.
|
|
24
|
+
*/
|
|
25
|
+
DateRangeType["HOURS_RANGE"] = "hours_range";
|
|
26
|
+
/**
|
|
27
|
+
* Range specified in days with the input.
|
|
28
|
+
*/
|
|
29
|
+
DateRangeType["DAYS_RANGE"] = "days_range";
|
|
30
|
+
/**
|
|
31
|
+
* Range specified in weeks with the input.
|
|
32
|
+
*/
|
|
33
|
+
DateRangeType["WEEKS_RANGE"] = "weeks_range";
|
|
34
|
+
/**
|
|
35
|
+
* Radius specified in hours with the input.
|
|
36
|
+
*/
|
|
37
|
+
DateRangeType["HOURS_RADIUS"] = "hours_radius";
|
|
38
|
+
/**
|
|
39
|
+
* Radius specified in days with the input.
|
|
40
|
+
*/
|
|
41
|
+
DateRangeType["DAYS_RADIUS"] = "days_radius";
|
|
42
|
+
/**
|
|
43
|
+
* Radius specified in weeks with the input.
|
|
44
|
+
*/
|
|
45
|
+
DateRangeType["WEEKS_RADIUS"] = "weeks_radius";
|
|
46
|
+
/**
|
|
47
|
+
* Plus/minus 20 hours from the current day.
|
|
48
|
+
*
|
|
49
|
+
* @deprecated design not relevant anymore
|
|
50
|
+
*/
|
|
51
|
+
DateRangeType["WITHIN_DAY"] = "within_day";
|
|
52
|
+
/**
|
|
53
|
+
* Plus/minus 4 days from the current day.
|
|
54
|
+
*
|
|
55
|
+
* @deprecated design not relevant anymore
|
|
56
|
+
*/
|
|
57
|
+
DateRangeType["WITHIN_WEEK"] = "within_week";
|
|
58
|
+
/**
|
|
59
|
+
* Plus/minus 16 days from the current day.
|
|
60
|
+
*
|
|
61
|
+
* @deprecated design not relevant anymore
|
|
62
|
+
*/
|
|
63
|
+
DateRangeType["WITHIN_MONTH"] = "within_month";
|
|
64
|
+
})(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {}));
|
|
65
|
+
;
|
|
66
|
+
var DateRangeState;
|
|
67
|
+
(function (DateRangeState) {
|
|
68
|
+
/**
|
|
69
|
+
* Range has yet to start and is in the future.
|
|
70
|
+
*/
|
|
71
|
+
DateRangeState["FUTURE"] = "future";
|
|
72
|
+
/**
|
|
73
|
+
* Range is in the present, but not yet ended.
|
|
74
|
+
*/
|
|
75
|
+
DateRangeState["PRESENT"] = "present";
|
|
76
|
+
/**
|
|
77
|
+
* Range is in the past.
|
|
78
|
+
*/
|
|
79
|
+
DateRangeState["PAST"] = "past";
|
|
80
|
+
})(DateRangeState = exports.DateRangeState || (exports.DateRangeState = {}));
|
|
81
|
+
/**
|
|
82
|
+
* Params for building a date range.
|
|
83
|
+
*/
|
|
84
|
+
class DateRangeParams {
|
|
85
|
+
constructor(template) {
|
|
86
|
+
/**
|
|
87
|
+
* Type of range.
|
|
88
|
+
*/
|
|
89
|
+
this.type = DateRangeType.DAY;
|
|
90
|
+
if (template) {
|
|
91
|
+
this.type = template.type;
|
|
92
|
+
this.date = template.date;
|
|
93
|
+
this.distance = template.distance;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
(0, tslib_1.__decorate)([
|
|
98
|
+
(0, class_validator_1.IsEnum)(DateRangeType),
|
|
99
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
100
|
+
], DateRangeParams.prototype, "type", void 0);
|
|
101
|
+
(0, tslib_1.__decorate)([
|
|
102
|
+
(0, class_validator_1.IsOptional)(),
|
|
103
|
+
(0, class_validator_1.IsDate)(),
|
|
104
|
+
(0, class_transformer_1.Type)(() => Date),
|
|
105
|
+
(0, tslib_1.__metadata)("design:type", Date)
|
|
106
|
+
], DateRangeParams.prototype, "date", void 0);
|
|
107
|
+
(0, tslib_1.__decorate)([
|
|
108
|
+
(0, class_validator_1.IsNumber)(),
|
|
109
|
+
(0, class_validator_1.IsOptional)(),
|
|
110
|
+
(0, tslib_1.__metadata)("design:type", Number)
|
|
111
|
+
], DateRangeParams.prototype, "distance", void 0);
|
|
112
|
+
exports.DateRangeParams = DateRangeParams;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a DateRange from the input DateRangeParams
|
|
115
|
+
*
|
|
116
|
+
* @param param0
|
|
117
|
+
* @param roundToMinute
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
function makeDateRange({ type, date = new Date(), distance }, roundToMinute = false) {
|
|
121
|
+
let start;
|
|
122
|
+
let end;
|
|
123
|
+
if (roundToMinute) {
|
|
124
|
+
date = (0, date_fns_1.startOfMinute)(date); // Reset to start of minute
|
|
125
|
+
}
|
|
126
|
+
distance = distance !== null && distance !== void 0 ? distance : 1;
|
|
127
|
+
const hasNegativeDistance = distance < 0;
|
|
128
|
+
switch (type) {
|
|
129
|
+
case DateRangeType.DAY:
|
|
130
|
+
start = (0, date_fns_1.startOfDay)(date);
|
|
131
|
+
end = (0, date_fns_1.endOfDay)(date);
|
|
132
|
+
break;
|
|
133
|
+
case DateRangeType.WEEK:
|
|
134
|
+
start = (0, date_fns_1.startOfWeek)(date);
|
|
135
|
+
end = (0, date_fns_1.endOfWeek)(date);
|
|
136
|
+
break;
|
|
137
|
+
case DateRangeType.MONTH:
|
|
138
|
+
start = (0, date_fns_1.startOfMonth)(date);
|
|
139
|
+
end = (0, date_fns_1.endOfMonth)(date);
|
|
140
|
+
break;
|
|
141
|
+
case DateRangeType.HOURS_RANGE:
|
|
142
|
+
if (hasNegativeDistance) {
|
|
143
|
+
start = (0, date_fns_1.addHours)(date, distance);
|
|
144
|
+
end = date;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
start = date;
|
|
148
|
+
end = (0, date_fns_1.addHours)(date, distance);
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
case DateRangeType.DAYS_RANGE:
|
|
152
|
+
if (hasNegativeDistance) {
|
|
153
|
+
start = (0, date_fns_1.addDays)(date, distance);
|
|
154
|
+
end = date;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
start = date;
|
|
158
|
+
end = (0, date_fns_1.addDays)(date, distance);
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
161
|
+
case DateRangeType.WEEKS_RANGE:
|
|
162
|
+
if (hasNegativeDistance) {
|
|
163
|
+
start = (0, date_fns_1.addDays)(date, distance * 7);
|
|
164
|
+
end = date;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
start = date;
|
|
168
|
+
end = (0, date_fns_1.addDays)(date, distance * 7);
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case DateRangeType.HOURS_RADIUS:
|
|
172
|
+
distance = Math.abs(distance);
|
|
173
|
+
start = (0, date_fns_1.addHours)(date, -distance);
|
|
174
|
+
end = (0, date_fns_1.addHours)(date, distance);
|
|
175
|
+
break;
|
|
176
|
+
case DateRangeType.DAYS_RADIUS:
|
|
177
|
+
distance = Math.abs(distance);
|
|
178
|
+
start = (0, date_fns_1.addDays)(date, -distance);
|
|
179
|
+
end = (0, date_fns_1.addDays)(date, distance);
|
|
180
|
+
break;
|
|
181
|
+
case DateRangeType.WEEKS_RADIUS:
|
|
182
|
+
distance = Math.abs(distance);
|
|
183
|
+
start = (0, date_fns_1.addDays)(date, -distance * 7);
|
|
184
|
+
end = (0, date_fns_1.addDays)(date, distance * 7);
|
|
185
|
+
break;
|
|
186
|
+
case DateRangeType.WITHIN_DAY:
|
|
187
|
+
start = (0, date_fns_1.addHours)(date, -20);
|
|
188
|
+
end = (0, date_fns_1.addHours)(date, 20);
|
|
189
|
+
break;
|
|
190
|
+
case DateRangeType.WITHIN_WEEK:
|
|
191
|
+
start = (0, date_fns_1.startOfDay)((0, date_fns_1.addDays)(date, -4));
|
|
192
|
+
end = (0, date_fns_1.endOfDay)((0, date_fns_1.addDays)(date, 4));
|
|
193
|
+
break;
|
|
194
|
+
case DateRangeType.WITHIN_MONTH:
|
|
195
|
+
start = (0, date_fns_1.startOfDay)((0, date_fns_1.addDays)(date, -16));
|
|
196
|
+
end = (0, date_fns_1.endOfDay)((0, date_fns_1.addDays)(date, 16));
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
start, end
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
exports.makeDateRange = makeDateRange;
|
|
204
|
+
/**
|
|
205
|
+
* Returns the DateRangeState from the input DateRange.
|
|
206
|
+
*
|
|
207
|
+
* @param param0
|
|
208
|
+
* @returns
|
|
209
|
+
*/
|
|
210
|
+
function dateRangeState({ start, end }) {
|
|
211
|
+
if ((0, date_fns_1.isPast)(end)) {
|
|
212
|
+
return DateRangeState.PAST;
|
|
213
|
+
}
|
|
214
|
+
else if ((0, date_fns_1.isPast)(start)) {
|
|
215
|
+
return DateRangeState.PRESENT;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
return DateRangeState.FUTURE;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.dateRangeState = dateRangeState;
|
|
222
|
+
//# sourceMappingURL=date.range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.range.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.range.ts"],"names":[],"mappings":";;;;AAAA,yDAAyC;AACzC,qDAAuE;AACvE,uCAA4I;AAU5I,IAAY,aAuDX;AAvDD,WAAY,aAAa;IACvB;;OAEG;IACH,4BAAW,CAAA;IACX;;OAEG;IACH,8BAAa,CAAA;IACb;;OAEG;IACH,gCAAe,CAAA;IACf;;OAEG;IACH,4CAA2B,CAAA;IAC3B;;OAEG;IACH,0CAAyB,CAAA;IACzB;;OAEG;IACH,4CAA2B,CAAA;IAC3B;;OAEG;IACH,8CAA6B,CAAA;IAC7B;;OAEG;IACH,4CAA2B,CAAA;IAC3B;;OAEG;IACH,8CAA6B,CAAA;IAC7B;;;;OAIG;IACH,0CAAyB,CAAA;IACzB;;;;OAIG;IACH,4CAA2B,CAAA;IAC3B;;;;OAIG;IACH,8CAA6B,CAAA;AAC/B,CAAC,EAvDW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAuDxB;AAAA,CAAC;AAEF,IAAY,cAaX;AAbD,WAAY,cAAc;IACxB;;OAEG;IACH,mCAAiB,CAAA;IACjB;;OAEG;IACH,qCAAmB,CAAA;IACnB;;OAEG;IACH,+BAAa,CAAA;AACf,CAAC,EAbW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAazB;AAED;;GAEG;AACH,MAAa,eAAe;IAoB1B,YAAY,QAAyB;QAlBrC;;WAEG;QAEH,SAAI,GAAkB,aAAa,CAAC,GAAG,CAAC;QAetC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;SACnC;IACH,CAAC;CAEF;AAtBC;IADC,IAAA,wBAAM,EAAC,aAAa,CAAC;;6CACkB;AAQxC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;2CACV,IAAI;6CAAC;AAIZ;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;iDACK;AAlBpB,0CA4BC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAmB,EAAE,aAAa,GAAG,KAAK;IACzG,IAAI,KAAW,CAAC;IAChB,IAAI,GAAS,CAAC;IAEd,IAAI,aAAa,EAAE;QACjB,IAAI,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B;KACxD;IAED,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,CAAC;IAEzB,MAAM,mBAAmB,GAAG,QAAQ,GAAG,CAAC,CAAC;IAEzC,QAAQ,IAAI,EAAE;QACZ,KAAK,aAAa,CAAC,GAAG;YACpB,KAAK,GAAG,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;YACzB,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,aAAa,CAAC,IAAI;YACrB,KAAK,GAAG,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;YAC1B,GAAG,GAAG,IAAA,oBAAS,EAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,aAAa,CAAC,KAAK;YACtB,KAAK,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;YAC3B,GAAG,GAAG,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,aAAa,CAAC,WAAW;YAC5B,IAAI,mBAAmB,EAAE;gBACvB,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACjC,GAAG,GAAG,IAAI,CAAC;aACZ;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC;gBACb,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAChC;YACD,MAAM;QACR,KAAK,aAAa,CAAC,UAAU;YAC3B,IAAI,mBAAmB,EAAE;gBACvB,KAAK,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAChC,GAAG,GAAG,IAAI,CAAC;aACZ;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC;gBACb,GAAG,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/B;YACD,MAAM;QACR,KAAK,aAAa,CAAC,WAAW;YAC5B,IAAI,mBAAmB,EAAE;gBACvB,KAAK,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACpC,GAAG,GAAG,IAAI,CAAC;aACZ;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC;gBACb,GAAG,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;aACnC;YACD,MAAM;QACR,KAAK,aAAa,CAAC,YAAY;YAC7B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;YAClC,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,aAAa,CAAC,WAAW;YAC5B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;YACjC,GAAG,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9B,MAAM;QACR,KAAK,aAAa,CAAC,YAAY;YAC7B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACrC,GAAG,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,aAAa,CAAC,UAAU;YAC3B,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,aAAa,CAAC,WAAW;YAC5B,KAAK,GAAG,IAAA,qBAAU,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,aAAa,CAAC,YAAY;YAC7B,KAAK,GAAG,IAAA,qBAAU,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAClC,MAAM;KACT;IAED,OAAO;QACL,KAAK,EAAE,GAAG;KACX,CAAC;AACJ,CAAC;AApFD,sCAoFC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAa;IACtD,IAAI,IAAA,iBAAM,EAAC,GAAG,CAAC,EAAE;QACf,OAAO,cAAc,CAAC,IAAI,CAAC;KAC5B;SAAM,IAAI,IAAA,iBAAM,EAAC,KAAK,CAAC,EAAE;QACxB,OAAO,cAAc,CAAC,OAAO,CAAC;KAC/B;SAAM;QACL,OAAO,cAAc,CAAC,MAAM,CAAC;KAC9B;AACH,CAAC;AARD,wCAQC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface RoundTimeDown {
|
|
2
|
+
roundDownToDay?: boolean;
|
|
3
|
+
roundDownToMinute?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface StepRoundDateTimeDown extends RoundTimeDown {
|
|
6
|
+
step?: number;
|
|
7
|
+
roundToSteps?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function roundDateTimeDownToSteps(date: Date, round: StepRoundDateTimeDown): Date;
|
|
10
|
+
export declare function roundDateTimeDown(date: Date, round: RoundTimeDown): Date;
|
|
11
|
+
/**
|
|
12
|
+
* Rounds the current number of minutes on the date to the nearest step.
|
|
13
|
+
*/
|
|
14
|
+
export declare function roundToMinuteSteps(date: Date, step: number): Date;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.roundToMinuteSteps = exports.roundDateTimeDown = exports.roundDateTimeDownToSteps = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
const date_fns_1 = require("date-fns");
|
|
6
|
+
// MARK: Rounding
|
|
7
|
+
function roundDateTimeDownToSteps(date, round) {
|
|
8
|
+
const { step, roundToSteps = true } = round;
|
|
9
|
+
if (roundToSteps) {
|
|
10
|
+
date = roundToMinuteSteps(date, step !== null && step !== void 0 ? step : 1);
|
|
11
|
+
}
|
|
12
|
+
return roundDateTimeDown(date, round);
|
|
13
|
+
}
|
|
14
|
+
exports.roundDateTimeDownToSteps = roundDateTimeDownToSteps;
|
|
15
|
+
function roundDateTimeDown(date, round) {
|
|
16
|
+
const { roundDownToDay = false, roundDownToMinute = true } = round;
|
|
17
|
+
let rounding = {};
|
|
18
|
+
if (roundDownToMinute) {
|
|
19
|
+
rounding = Object.assign(Object.assign({}, rounding), { seconds: 0, milliseconds: 0 });
|
|
20
|
+
}
|
|
21
|
+
if (roundDownToDay) {
|
|
22
|
+
rounding = Object.assign(Object.assign({}, rounding), { hours: 0, minutes: 0 });
|
|
23
|
+
}
|
|
24
|
+
return (0, date_fns_1.set)(date, rounding);
|
|
25
|
+
}
|
|
26
|
+
exports.roundDateTimeDown = roundDateTimeDown;
|
|
27
|
+
/**
|
|
28
|
+
* Rounds the current number of minutes on the date to the nearest step.
|
|
29
|
+
*/
|
|
30
|
+
function roundToMinuteSteps(date, step) {
|
|
31
|
+
// Only steps of 1 or more are allowed.
|
|
32
|
+
if (step <= 1) {
|
|
33
|
+
return date;
|
|
34
|
+
}
|
|
35
|
+
const minute = (0, date_fns_1.getMinutes)(date);
|
|
36
|
+
const roundedValue = (0, util_1.roundNumberUpToStep)(minute, step);
|
|
37
|
+
if (roundedValue !== minute) {
|
|
38
|
+
if (roundedValue === 60) { // Round the hour up.
|
|
39
|
+
date = (0, date_fns_1.addHours)((0, date_fns_1.set)(date, { minutes: 0 }), 1);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
date = (0, date_fns_1.set)(date, { minutes: roundedValue });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return date;
|
|
46
|
+
}
|
|
47
|
+
exports.roundToMinuteSteps = roundToMinuteSteps;
|
|
48
|
+
//# sourceMappingURL=date.round.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.round.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.round.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AACpD,uCAAqD;AAYrD,iBAAiB;AACjB,SAAgB,wBAAwB,CAAC,IAAU,EAAE,KAA4B;IAC/E,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAE5C,IAAI,YAAY,EAAE;QAChB,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,CAAC,CAAC,CAAC;KAC5C;IAED,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AARD,4DAQC;AAED,SAAgB,iBAAiB,CAAC,IAAU,EAAE,KAAoB;IAChE,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnE,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,iBAAiB,EAAE;QACrB,QAAQ,mCACH,QAAQ,KACX,OAAO,EAAE,CAAC,EACV,YAAY,EAAE,CAAC,GAChB,CAAC;KACH;IAED,IAAI,cAAc,EAAE;QAClB,QAAQ,mCACH,QAAQ,KACX,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,GACX,CAAC;KACH;IAED,OAAO,IAAA,cAAG,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAtBD,8CAsBC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAU,EAAE,IAAY;IAEzD,uCAAuC;IACvC,IAAI,IAAI,IAAI,CAAC,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IAED,MAAM,MAAM,GAAG,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,IAAA,0BAAmB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvD,IAAI,YAAY,KAAK,MAAM,EAAE;QAC3B,IAAI,YAAY,KAAK,EAAE,EAAE,EAAG,qBAAqB;YAC/C,IAAI,GAAG,IAAA,mBAAQ,EAAC,IAAA,cAAG,EAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/C;aAAM;YACL,IAAI,GAAG,IAAA,cAAG,EAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;SAC7C;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAnBD,gDAmBC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ISO8601DateStringUTCFull, SortingOrder } from "@dereekb/util";
|
|
2
|
+
/**
|
|
3
|
+
* Sorts the input values by ISO8601DateStringUTCFull values from the input models.
|
|
4
|
+
*
|
|
5
|
+
* @param values
|
|
6
|
+
* @param readDate
|
|
7
|
+
* @param order
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare function sortByISO8601DateStrings<T>(values: T[], readDate: (value: T) => ISO8601DateStringUTCFull, order?: SortingOrder): T[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sortByISO8601DateStrings = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
/**
|
|
6
|
+
* Sorts the input values by ISO8601DateStringUTCFull values from the input models.
|
|
7
|
+
*
|
|
8
|
+
* @param values
|
|
9
|
+
* @param readDate
|
|
10
|
+
* @param order
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
function sortByISO8601DateStrings(values, readDate, order) {
|
|
14
|
+
const valuesToSort = [...values];
|
|
15
|
+
const sortAscendingFn = function (a, b) {
|
|
16
|
+
const aDate = readDate(a);
|
|
17
|
+
const bDate = readDate(b);
|
|
18
|
+
// Lexiographical comparison of the ISO8601 Date strings.
|
|
19
|
+
return (aDate < bDate) ? util_1.SORT_VALUE_LESS_THAN : ((aDate > bDate) ? util_1.SORT_VALUE_GREATER_THAN : util_1.SORT_VALUE_EQUAL);
|
|
20
|
+
};
|
|
21
|
+
valuesToSort.sort((0, util_1.compareFnOrder)(sortAscendingFn, order));
|
|
22
|
+
return valuesToSort;
|
|
23
|
+
}
|
|
24
|
+
exports.sortByISO8601DateStrings = sortByISO8601DateStrings;
|
|
25
|
+
//# sourceMappingURL=date.sort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.sort.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.sort.ts"],"names":[],"mappings":";;;AAAA,wCAAwJ;AAExJ;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CAAI,MAAW,EAAE,QAAgD,EAAE,KAAoB;IAC7H,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAEjC,MAAM,eAAe,GAAG,UAAU,CAAI,EAAE,CAAI;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE1B,yDAAyD;QACzD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,2BAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,8BAAuB,CAAC,CAAC,CAAC,uBAAgB,CAAC,CAAC;IACjH,CAAC,CAAC;IAEF,YAAY,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1D,OAAO,YAAY,CAAC;AACtB,CAAC;AAdD,4DAcC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Maybe, ReadableTimeString, TimeAM, TimezoneString } from '@dereekb/util';
|
|
2
|
+
import { LimitDateTimeConfig, LimitDateTimeInstance } from './date.time.limit';
|
|
3
|
+
import { DateTimezoneConversionConfig, DateTimezoneUtcNormalInstance } from './date.timezone';
|
|
4
|
+
export interface ParsedTimeString {
|
|
5
|
+
/**
|
|
6
|
+
* Parsed "raw" date in UTC.
|
|
7
|
+
*/
|
|
8
|
+
utc: Date;
|
|
9
|
+
/**
|
|
10
|
+
* Understood date, given the input.
|
|
11
|
+
*/
|
|
12
|
+
date: Date;
|
|
13
|
+
/**
|
|
14
|
+
* Minute in the day.
|
|
15
|
+
*/
|
|
16
|
+
minutesSinceStartOfDay: number;
|
|
17
|
+
/**
|
|
18
|
+
* AM or PM
|
|
19
|
+
*/
|
|
20
|
+
am: TimeAM;
|
|
21
|
+
}
|
|
22
|
+
export interface ParseTimeString extends DateTimezoneConversionConfig {
|
|
23
|
+
/**
|
|
24
|
+
* Reference date to parse from.
|
|
25
|
+
*/
|
|
26
|
+
date?: Date;
|
|
27
|
+
}
|
|
28
|
+
export interface DateFromTimestringResult {
|
|
29
|
+
/**
|
|
30
|
+
* The "raw" date. This occurs at the UTC time of the parsed result. For instance, 1PM for any timezone will return 1PM in UTC for the same date.
|
|
31
|
+
*/
|
|
32
|
+
raw?: Maybe<Date>;
|
|
33
|
+
/**
|
|
34
|
+
* The real, post-timezone-converted value.
|
|
35
|
+
*/
|
|
36
|
+
result?: Maybe<Date>;
|
|
37
|
+
/**
|
|
38
|
+
* Whether or not the value was parsed.
|
|
39
|
+
*
|
|
40
|
+
* If not value, raw and result may be undefined.
|
|
41
|
+
*/
|
|
42
|
+
valid: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface ValidDateFromTimestringResult extends Required<DateFromTimestringResult> {
|
|
45
|
+
result: Date;
|
|
46
|
+
raw: Date;
|
|
47
|
+
valid: true;
|
|
48
|
+
}
|
|
49
|
+
export declare function isValidDateFromTimestringResult(result: ValidDateFromTimestringResult | DateFromTimestringResult): result is ValidDateFromTimestringResult;
|
|
50
|
+
/**
|
|
51
|
+
* A utility instance.
|
|
52
|
+
*/
|
|
53
|
+
export declare class DateTimeUtilityInstance {
|
|
54
|
+
readonly normalInstance: DateTimezoneUtcNormalInstance;
|
|
55
|
+
/**
|
|
56
|
+
* The default timezone all inputs should be handled with.
|
|
57
|
+
*
|
|
58
|
+
* If the timezone is not defined, it defaults to UTC.
|
|
59
|
+
*/
|
|
60
|
+
constructor(timezone?: Maybe<TimezoneString>);
|
|
61
|
+
get timezone(): TimezoneString;
|
|
62
|
+
getTimeAM(date?: Date, timezone?: TimezoneString): TimeAM;
|
|
63
|
+
toTimeString(date: Date, timezone?: TimezoneString): ReadableTimeString;
|
|
64
|
+
parseTimeString(input: ReadableTimeString, config?: ParseTimeString): Maybe<ParsedTimeString>;
|
|
65
|
+
/**
|
|
66
|
+
* Returns a timestring parsed relative to the input config.
|
|
67
|
+
*
|
|
68
|
+
* @param input
|
|
69
|
+
* @param config
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
timeStringToDate(input: ReadableTimeString, config?: ParseTimeString): Maybe<Date>;
|
|
73
|
+
_timeStringToDate(input: ReadableTimeString, config?: ParseTimeString): DateFromTimestringResult | ValidDateFromTimestringResult;
|
|
74
|
+
private _normalizeInstanceForConfig;
|
|
75
|
+
}
|
|
76
|
+
export declare function dateTimeInstanceUtc(): DateTimeUtilityInstance;
|
|
77
|
+
export declare function dateTimeInstance(timezone?: Maybe<TimezoneString>): DateTimeUtilityInstance;
|
|
78
|
+
export declare function getTimeAM(date?: Date, timezone?: Maybe<TimezoneString>): TimeAM;
|
|
79
|
+
export declare function toReadableTimeString(date: Date, timezone?: Maybe<TimezoneString>): ReadableTimeString;
|
|
80
|
+
export declare function parseReadableTimeString(input: ReadableTimeString, config?: ParseTimeString): Maybe<ParsedTimeString>;
|
|
81
|
+
export declare function readableTimeStringToDate(input: ReadableTimeString, config?: ParseTimeString): Maybe<Date>;
|
|
82
|
+
export declare function limitDateTime(config: LimitDateTimeConfig): LimitDateTimeInstance;
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.limitDateTime = exports.readableTimeStringToDate = exports.parseReadableTimeString = exports.toReadableTimeString = exports.getTimeAM = exports.dateTimeInstance = exports.dateTimeInstanceUtc = exports.DateTimeUtilityInstance = exports.isValidDateFromTimestringResult = void 0;
|
|
4
|
+
const date_fns_1 = require("date-fns");
|
|
5
|
+
const date_fns_tz_1 = require("date-fns-tz");
|
|
6
|
+
const util_1 = require("@dereekb/util");
|
|
7
|
+
const date_time_limit_1 = require("./date.time.limit");
|
|
8
|
+
const date_timezone_1 = require("./date.timezone");
|
|
9
|
+
function isValidDateFromTimestringResult(result) {
|
|
10
|
+
return result.valid;
|
|
11
|
+
}
|
|
12
|
+
exports.isValidDateFromTimestringResult = isValidDateFromTimestringResult;
|
|
13
|
+
/**
|
|
14
|
+
* A utility instance.
|
|
15
|
+
*/
|
|
16
|
+
class DateTimeUtilityInstance {
|
|
17
|
+
/**
|
|
18
|
+
* The default timezone all inputs should be handled with.
|
|
19
|
+
*
|
|
20
|
+
* If the timezone is not defined, it defaults to UTC.
|
|
21
|
+
*/
|
|
22
|
+
constructor(timezone) {
|
|
23
|
+
this.normalInstance = new date_timezone_1.DateTimezoneUtcNormalInstance(timezone);
|
|
24
|
+
}
|
|
25
|
+
get timezone() {
|
|
26
|
+
return this.normalInstance.config.timezone;
|
|
27
|
+
}
|
|
28
|
+
getTimeAM(date = new Date(), timezone) {
|
|
29
|
+
const am = (0, date_fns_tz_1.formatInTimeZone)(date, timezone !== null && timezone !== void 0 ? timezone : this.timezone, 'a');
|
|
30
|
+
return am;
|
|
31
|
+
}
|
|
32
|
+
toTimeString(date, timezone) {
|
|
33
|
+
return (0, date_fns_tz_1.formatInTimeZone)(date, timezone !== null && timezone !== void 0 ? timezone : this.timezone, `h:mma`);
|
|
34
|
+
}
|
|
35
|
+
parseTimeString(input, config) {
|
|
36
|
+
const timestringResult = this._timeStringToDate(input, config);
|
|
37
|
+
if (isValidDateFromTimestringResult(timestringResult)) {
|
|
38
|
+
const { result, raw, valid } = timestringResult;
|
|
39
|
+
// Use minutes since start of day. Since differenceInMinutes uses system time, we convert the raw to system time first.
|
|
40
|
+
const inSystemTime = (0, date_timezone_1.systemNormalDateToBaseDate)(raw);
|
|
41
|
+
const minutesSinceStartOfDay = (0, date_fns_1.differenceInMinutes)(inSystemTime, (0, date_fns_1.startOfDay)(inSystemTime));
|
|
42
|
+
return {
|
|
43
|
+
utc: raw,
|
|
44
|
+
date: result,
|
|
45
|
+
minutesSinceStartOfDay,
|
|
46
|
+
am: minutesSinceStartOfDay < 720 ? util_1.TimeAM.AM : util_1.TimeAM.PM
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Returns a timestring parsed relative to the input config.
|
|
55
|
+
*
|
|
56
|
+
* @param input
|
|
57
|
+
* @param config
|
|
58
|
+
* @returns
|
|
59
|
+
*/
|
|
60
|
+
timeStringToDate(input, config) {
|
|
61
|
+
const { result, valid } = this._timeStringToDate(input, config);
|
|
62
|
+
if (valid) {
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
_timeStringToDate(input, config = {}) {
|
|
70
|
+
const { date: inputDate = new Date() } = config;
|
|
71
|
+
if (!input) {
|
|
72
|
+
return { valid: false };
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
input = input.trim();
|
|
76
|
+
}
|
|
77
|
+
/*
|
|
78
|
+
The input date needs to capture the right Day we want to parse on.
|
|
79
|
+
We do this by adding the offset of the system with the offset of the target timezone.
|
|
80
|
+
*/
|
|
81
|
+
const relativeDateNormal = new date_timezone_1.DateTimezoneUtcNormalInstance(config);
|
|
82
|
+
const relativeDate = relativeDateNormal._normalDateToBaseDate(inputDate, { betweenSystemAndOffset: true });
|
|
83
|
+
const formats = [
|
|
84
|
+
'h:mma',
|
|
85
|
+
'h:mm a',
|
|
86
|
+
'h a',
|
|
87
|
+
'ha',
|
|
88
|
+
'h:mm' // 1:20
|
|
89
|
+
];
|
|
90
|
+
let parsedDateTime;
|
|
91
|
+
let valid = false;
|
|
92
|
+
// tslint:disable-next-line: prefer-for-of
|
|
93
|
+
for (let i = 0; i < formats.length; i += 1) {
|
|
94
|
+
parsedDateTime = (0, date_fns_1.parse)(input, formats[i], relativeDate);
|
|
95
|
+
if ((0, date_fns_1.isValid)(parsedDateTime)) {
|
|
96
|
+
valid = true;
|
|
97
|
+
break; // Use time.
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!valid) {
|
|
101
|
+
input = input.trim().replace(/\s+/g, '');
|
|
102
|
+
let removedPm = false;
|
|
103
|
+
function removeAmPm(inputString) {
|
|
104
|
+
inputString = inputString.toLowerCase();
|
|
105
|
+
removedPm = inputString.indexOf('pm') !== -1;
|
|
106
|
+
inputString = inputString.replace(/\am|pm/g, '');
|
|
107
|
+
return inputString;
|
|
108
|
+
}
|
|
109
|
+
function parseDateTimeFromNumber(inputString) {
|
|
110
|
+
const hour = inputString[0];
|
|
111
|
+
const minute = inputString[1] + inputString[2];
|
|
112
|
+
return (0, date_fns_1.parse)(`${hour}:${minute}AM`, 'h:mma', relativeDate);
|
|
113
|
+
}
|
|
114
|
+
function parseDateTimeAsHmm(inputString) {
|
|
115
|
+
return (0, date_fns_1.parse)(inputString, 'Hmm', relativeDate);
|
|
116
|
+
}
|
|
117
|
+
switch (input.length) {
|
|
118
|
+
case 1:
|
|
119
|
+
case 2:
|
|
120
|
+
// 1
|
|
121
|
+
parsedDateTime = (0, date_fns_1.parse)(input, 'H', relativeDate);
|
|
122
|
+
break;
|
|
123
|
+
case 5:
|
|
124
|
+
// 120AM
|
|
125
|
+
input = removeAmPm(input);
|
|
126
|
+
parsedDateTime = parseDateTimeFromNumber(input);
|
|
127
|
+
break;
|
|
128
|
+
case 3:
|
|
129
|
+
// 120
|
|
130
|
+
parsedDateTime = parseDateTimeFromNumber(input);
|
|
131
|
+
break;
|
|
132
|
+
case 6:
|
|
133
|
+
// 1212AM
|
|
134
|
+
removeAmPm(input);
|
|
135
|
+
if (removedPm) {
|
|
136
|
+
removedPm = input[0] !== '2'; // If 2, ignore the PM part.
|
|
137
|
+
}
|
|
138
|
+
parsedDateTime = parseDateTimeAsHmm(input);
|
|
139
|
+
break;
|
|
140
|
+
default:
|
|
141
|
+
// 2200
|
|
142
|
+
parsedDateTime = parseDateTimeAsHmm(input);
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
if (removedPm) {
|
|
146
|
+
parsedDateTime = (0, date_fns_1.addHours)(parsedDateTime, 12);
|
|
147
|
+
}
|
|
148
|
+
valid = (0, date_fns_1.isValid)(parsedDateTime);
|
|
149
|
+
}
|
|
150
|
+
// console.log('Parsed: ', input, inputDate, relativeDate, parsedDateTime);
|
|
151
|
+
// Raw parse result is always UTC for that date.
|
|
152
|
+
// For example, 1AM will return 1AM UTC in a Date object.
|
|
153
|
+
let raw;
|
|
154
|
+
if (valid) {
|
|
155
|
+
// The parsed DateTime will be in the system settings for that date in as a UTC time.
|
|
156
|
+
raw = (0, date_timezone_1.systemBaseDateToNormalDate)(parsedDateTime);
|
|
157
|
+
parsedDateTime = relativeDateNormal._baseDateToNormalDate(parsedDateTime, { betweenSystemAndOffset: true });
|
|
158
|
+
// console.log('Raw: ', input, raw, parsedDateTime, this.normalInstance.config);
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
raw: raw,
|
|
162
|
+
result: parsedDateTime,
|
|
163
|
+
valid
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
_normalizeInstanceForConfig(config) {
|
|
167
|
+
var _a;
|
|
168
|
+
let instance;
|
|
169
|
+
if ((0, date_timezone_1.isSameDateTimezoneConversionConfig)(this.normalInstance.config, config)) {
|
|
170
|
+
instance = this.normalInstance;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
instance = new date_timezone_1.DateTimezoneUtcNormalInstance(Object.assign(Object.assign({}, config), { timezone: (_a = config.timezone) !== null && _a !== void 0 ? _a : this.normalInstance.config.timezone }));
|
|
174
|
+
}
|
|
175
|
+
return instance;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.DateTimeUtilityInstance = DateTimeUtilityInstance;
|
|
179
|
+
function dateTimeInstanceUtc() {
|
|
180
|
+
return dateTimeInstance(util_1.UTC_TIMEZONE_STRING);
|
|
181
|
+
}
|
|
182
|
+
exports.dateTimeInstanceUtc = dateTimeInstanceUtc;
|
|
183
|
+
function dateTimeInstance(timezone) {
|
|
184
|
+
return new DateTimeUtilityInstance(timezone !== null && timezone !== void 0 ? timezone : util_1.UTC_TIMEZONE_STRING);
|
|
185
|
+
}
|
|
186
|
+
exports.dateTimeInstance = dateTimeInstance;
|
|
187
|
+
function getTimeAM(date = new Date(), timezone) {
|
|
188
|
+
return dateTimeInstance(timezone).getTimeAM(date);
|
|
189
|
+
}
|
|
190
|
+
exports.getTimeAM = getTimeAM;
|
|
191
|
+
function toReadableTimeString(date, timezone) {
|
|
192
|
+
return dateTimeInstance(timezone).toTimeString(date);
|
|
193
|
+
}
|
|
194
|
+
exports.toReadableTimeString = toReadableTimeString;
|
|
195
|
+
function parseReadableTimeString(input, config) {
|
|
196
|
+
return dateTimeInstance(config === null || config === void 0 ? void 0 : config.timezone).parseTimeString(input, config);
|
|
197
|
+
}
|
|
198
|
+
exports.parseReadableTimeString = parseReadableTimeString;
|
|
199
|
+
function readableTimeStringToDate(input, config) {
|
|
200
|
+
return dateTimeInstance(config === null || config === void 0 ? void 0 : config.timezone).timeStringToDate(input, config);
|
|
201
|
+
}
|
|
202
|
+
exports.readableTimeStringToDate = readableTimeStringToDate;
|
|
203
|
+
// MARK: Limits
|
|
204
|
+
function limitDateTime(config) {
|
|
205
|
+
return new date_time_limit_1.LimitDateTimeInstance(config);
|
|
206
|
+
}
|
|
207
|
+
exports.limitDateTime = limitDateTime;
|
|
208
|
+
//# sourceMappingURL=date.time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.time.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.time.ts"],"names":[],"mappings":"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"}
|