1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | exports.isToday = exports.get24HourFrom12Hour = exports.get12HourFrom24Hour = exports.getIsPmFrom24Hour = exports.convert24HourMeridiem = exports.getDateNextMonth = exports.getDatePreviousMonth = exports.getDateOnlyWithTime = exports.getDateTime = exports.getDateBetween = exports.isTimeSameOrAfter = exports.getTimeInRange = exports.isTimeInRange = exports.isTimeEqualOrSmallerThan = exports.isTimeEqualOrGreaterThan = exports.isMonthInRange = exports.isDayRangeInRange = exports.isDayInRange = exports.clone = exports.areSameTime = exports.areSameMonth = exports.areSameDay = exports.areRangesEqual = exports.areEqual = exports.isDateValid = void 0;
|
19 | var months_1 = require("./months");
|
20 | function isDateValid(date) {
|
21 | return date instanceof Date && !isNaN(date.valueOf());
|
22 | }
|
23 | exports.isDateValid = isDateValid;
|
24 | function areEqual(date1, date2) {
|
25 | if (date1 == null && date2 == null) {
|
26 | return true;
|
27 | }
|
28 | else if (date1 == null || date2 == null) {
|
29 | return false;
|
30 | }
|
31 | else {
|
32 | return date1.getTime() === date2.getTime();
|
33 | }
|
34 | }
|
35 | exports.areEqual = areEqual;
|
36 | function areRangesEqual(dateRange1, dateRange2) {
|
37 | if (dateRange1 == null && dateRange2 == null) {
|
38 | return true;
|
39 | }
|
40 | else if (dateRange1 == null || dateRange2 == null) {
|
41 | return false;
|
42 | }
|
43 | else {
|
44 | var start1 = dateRange1[0], end1 = dateRange1[1];
|
45 | var start2 = dateRange2[0], end2 = dateRange2[1];
|
46 | var areStartsEqual = (start1 == null && start2 == null) || areSameDay(start1, start2);
|
47 | var areEndsEqual = (end1 == null && end2 == null) || areSameDay(end1, end2);
|
48 | return areStartsEqual && areEndsEqual;
|
49 | }
|
50 | }
|
51 | exports.areRangesEqual = areRangesEqual;
|
52 | function areSameDay(date1, date2) {
|
53 | return areSameMonth(date1, date2) && date1.getDate() === date2.getDate();
|
54 | }
|
55 | exports.areSameDay = areSameDay;
|
56 | function areSameMonth(date1, date2) {
|
57 | return (date1 != null &&
|
58 | date2 != null &&
|
59 | date1.getMonth() === date2.getMonth() &&
|
60 | date1.getFullYear() === date2.getFullYear());
|
61 | }
|
62 | exports.areSameMonth = areSameMonth;
|
63 | function areSameTime(date1, date2) {
|
64 | return (date1 != null &&
|
65 | date2 != null &&
|
66 | date1.getHours() === date2.getHours() &&
|
67 | date1.getMinutes() === date2.getMinutes() &&
|
68 | date1.getSeconds() === date2.getSeconds() &&
|
69 | date1.getMilliseconds() === date2.getMilliseconds());
|
70 | }
|
71 | exports.areSameTime = areSameTime;
|
72 | function clone(d) {
|
73 | return new Date(d.getTime());
|
74 | }
|
75 | exports.clone = clone;
|
76 | function isDayInRange(date, dateRange, exclusive) {
|
77 | if (exclusive === void 0) { exclusive = false; }
|
78 | if (date == null) {
|
79 | return false;
|
80 | }
|
81 | var day = clone(date);
|
82 | var start = clone(dateRange[0]);
|
83 | var end = clone(dateRange[1]);
|
84 | day.setHours(0, 0, 0, 0);
|
85 | start.setHours(0, 0, 0, 0);
|
86 | end.setHours(0, 0, 0, 0);
|
87 | return start <= day && day <= end && (!exclusive || (!areSameDay(start, day) && !areSameDay(day, end)));
|
88 | }
|
89 | exports.isDayInRange = isDayInRange;
|
90 | function isDayRangeInRange(innerRange, outerRange) {
|
91 | return ((innerRange[0] == null || isDayInRange(innerRange[0], outerRange)) &&
|
92 | (innerRange[1] == null || isDayInRange(innerRange[1], outerRange)));
|
93 | }
|
94 | exports.isDayRangeInRange = isDayRangeInRange;
|
95 | function isMonthInRange(date, dateRange) {
|
96 | if (date == null) {
|
97 | return false;
|
98 | }
|
99 | var day = clone(date);
|
100 | var start = clone(dateRange[0]);
|
101 | var end = clone(dateRange[1]);
|
102 | day.setDate(1);
|
103 | start.setDate(1);
|
104 | end.setDate(1);
|
105 | day.setHours(0, 0, 0, 0);
|
106 | start.setHours(0, 0, 0, 0);
|
107 | end.setHours(0, 0, 0, 0);
|
108 | return start <= day && day <= end;
|
109 | }
|
110 | exports.isMonthInRange = isMonthInRange;
|
111 | var isTimeEqualOrGreaterThan = function (time, timeToCompare) { return time.getTime() >= timeToCompare.getTime(); };
|
112 | exports.isTimeEqualOrGreaterThan = isTimeEqualOrGreaterThan;
|
113 | var isTimeEqualOrSmallerThan = function (time, timeToCompare) { return time.getTime() <= timeToCompare.getTime(); };
|
114 | exports.isTimeEqualOrSmallerThan = isTimeEqualOrSmallerThan;
|
115 | function isTimeInRange(date, minDate, maxDate) {
|
116 | var time = getDateOnlyWithTime(date);
|
117 | var minTime = getDateOnlyWithTime(minDate);
|
118 | var maxTime = getDateOnlyWithTime(maxDate);
|
119 | var isTimeGreaterThanMinTime = (0, exports.isTimeEqualOrGreaterThan)(time, minTime);
|
120 | var isTimeSmallerThanMaxTime = (0, exports.isTimeEqualOrSmallerThan)(time, maxTime);
|
121 | if ((0, exports.isTimeEqualOrSmallerThan)(maxTime, minTime)) {
|
122 | return isTimeGreaterThanMinTime || isTimeSmallerThanMaxTime;
|
123 | }
|
124 | return isTimeGreaterThanMinTime && isTimeSmallerThanMaxTime;
|
125 | }
|
126 | exports.isTimeInRange = isTimeInRange;
|
127 | function getTimeInRange(time, minTime, maxTime) {
|
128 | if (areSameTime(minTime, maxTime)) {
|
129 | return maxTime;
|
130 | }
|
131 | else if (isTimeInRange(time, minTime, maxTime)) {
|
132 | return time;
|
133 | }
|
134 | else if (isTimeSameOrAfter(time, maxTime)) {
|
135 | return maxTime;
|
136 | }
|
137 | return minTime;
|
138 | }
|
139 | exports.getTimeInRange = getTimeInRange;
|
140 |
|
141 |
|
142 |
|
143 |
|
144 | function isTimeSameOrAfter(date, dateToCompare) {
|
145 | var time = getDateOnlyWithTime(date);
|
146 | var timeToCompare = getDateOnlyWithTime(dateToCompare);
|
147 | return (0, exports.isTimeEqualOrGreaterThan)(time, timeToCompare);
|
148 | }
|
149 | exports.isTimeSameOrAfter = isTimeSameOrAfter;
|
150 |
|
151 |
|
152 |
|
153 | function getDateBetween(dateRange) {
|
154 | var start = dateRange[0].getTime();
|
155 | var end = dateRange[1].getTime();
|
156 | var middle = start + (end - start) * 0.5;
|
157 | return new Date(middle);
|
158 | }
|
159 | exports.getDateBetween = getDateBetween;
|
160 | function getDateTime(date, time) {
|
161 | if (date == null) {
|
162 | return null;
|
163 | }
|
164 | else if (time == null) {
|
165 |
|
166 | return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);
|
167 | }
|
168 | else {
|
169 | return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());
|
170 | }
|
171 | }
|
172 | exports.getDateTime = getDateTime;
|
173 | function getDateOnlyWithTime(date) {
|
174 | return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
|
175 | }
|
176 | exports.getDateOnlyWithTime = getDateOnlyWithTime;
|
177 | function getDatePreviousMonth(date) {
|
178 | if (date.getMonth() === months_1.Months.JANUARY) {
|
179 | return new Date(date.getFullYear() - 1, months_1.Months.DECEMBER);
|
180 | }
|
181 | else {
|
182 | return new Date(date.getFullYear(), date.getMonth() - 1);
|
183 | }
|
184 | }
|
185 | exports.getDatePreviousMonth = getDatePreviousMonth;
|
186 | function getDateNextMonth(date) {
|
187 | if (date.getMonth() === months_1.Months.DECEMBER) {
|
188 | return new Date(date.getFullYear() + 1, months_1.Months.JANUARY);
|
189 | }
|
190 | else {
|
191 | return new Date(date.getFullYear(), date.getMonth() + 1);
|
192 | }
|
193 | }
|
194 | exports.getDateNextMonth = getDateNextMonth;
|
195 | function convert24HourMeridiem(hour, toPm) {
|
196 | if (hour < 0 || hour > 23) {
|
197 | throw new Error("hour must be between [0,23] inclusive: got ".concat(hour));
|
198 | }
|
199 | return toPm ? (hour % 12) + 12 : hour % 12;
|
200 | }
|
201 | exports.convert24HourMeridiem = convert24HourMeridiem;
|
202 | function getIsPmFrom24Hour(hour) {
|
203 | if (hour < 0 || hour > 23) {
|
204 | throw new Error("hour must be between [0,23] inclusive: got ".concat(hour));
|
205 | }
|
206 | return hour >= 12;
|
207 | }
|
208 | exports.getIsPmFrom24Hour = getIsPmFrom24Hour;
|
209 | function get12HourFrom24Hour(hour) {
|
210 | if (hour < 0 || hour > 23) {
|
211 | throw new Error("hour must be between [0,23] inclusive: got ".concat(hour));
|
212 | }
|
213 | var newHour = hour % 12;
|
214 | return newHour === 0 ? 12 : newHour;
|
215 | }
|
216 | exports.get12HourFrom24Hour = get12HourFrom24Hour;
|
217 | function get24HourFrom12Hour(hour, isPm) {
|
218 | if (hour < 1 || hour > 12) {
|
219 | throw new Error("hour must be between [1,12] inclusive: got ".concat(hour));
|
220 | }
|
221 | var newHour = hour === 12 ? 0 : hour;
|
222 | return isPm ? newHour + 12 : newHour;
|
223 | }
|
224 | exports.get24HourFrom12Hour = get24HourFrom12Hour;
|
225 | function isToday(date) {
|
226 | return areSameDay(date, new Date());
|
227 | }
|
228 | exports.isToday = isToday;
|
229 |
|
\ | No newline at end of file |