UNPKG

9.03 kBJavaScriptView Raw
1"use strict";
2/*
3 * Copyright 2015 Palantir Technologies, Inc. All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17Object.defineProperty(exports, "__esModule", { value: true });
18exports.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;
19var months_1 = require("./months");
20function isDateValid(date) {
21 return date instanceof Date && !isNaN(date.valueOf());
22}
23exports.isDateValid = isDateValid;
24function 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}
35exports.areEqual = areEqual;
36function 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}
51exports.areRangesEqual = areRangesEqual;
52function areSameDay(date1, date2) {
53 return areSameMonth(date1, date2) && date1.getDate() === date2.getDate();
54}
55exports.areSameDay = areSameDay;
56function areSameMonth(date1, date2) {
57 return (date1 != null &&
58 date2 != null &&
59 date1.getMonth() === date2.getMonth() &&
60 date1.getFullYear() === date2.getFullYear());
61}
62exports.areSameMonth = areSameMonth;
63function 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}
71exports.areSameTime = areSameTime;
72function clone(d) {
73 return new Date(d.getTime());
74}
75exports.clone = clone;
76function 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}
89exports.isDayInRange = isDayInRange;
90function isDayRangeInRange(innerRange, outerRange) {
91 return ((innerRange[0] == null || isDayInRange(innerRange[0], outerRange)) &&
92 (innerRange[1] == null || isDayInRange(innerRange[1], outerRange)));
93}
94exports.isDayRangeInRange = isDayRangeInRange;
95function 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}
110exports.isMonthInRange = isMonthInRange;
111var isTimeEqualOrGreaterThan = function (time, timeToCompare) { return time.getTime() >= timeToCompare.getTime(); };
112exports.isTimeEqualOrGreaterThan = isTimeEqualOrGreaterThan;
113var isTimeEqualOrSmallerThan = function (time, timeToCompare) { return time.getTime() <= timeToCompare.getTime(); };
114exports.isTimeEqualOrSmallerThan = isTimeEqualOrSmallerThan;
115function 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}
126exports.isTimeInRange = isTimeInRange;
127function 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}
139exports.getTimeInRange = getTimeInRange;
140/**
141 * Returns true if the time part of `date` is later than or equal to the time
142 * part of `dateToCompare`. The day, month, and year parts will not be compared.
143 */
144function isTimeSameOrAfter(date, dateToCompare) {
145 var time = getDateOnlyWithTime(date);
146 var timeToCompare = getDateOnlyWithTime(dateToCompare);
147 return (0, exports.isTimeEqualOrGreaterThan)(time, timeToCompare);
148}
149exports.isTimeSameOrAfter = isTimeSameOrAfter;
150/**
151 * @returns a Date at the exact time-wise midpoint between startDate and endDate
152 */
153function 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}
159exports.getDateBetween = getDateBetween;
160function getDateTime(date, time) {
161 if (date == null) {
162 return null;
163 }
164 else if (time == null) {
165 // cannot use default argument because `null` is a common value in this package.
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}
172exports.getDateTime = getDateTime;
173function getDateOnlyWithTime(date) {
174 return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
175}
176exports.getDateOnlyWithTime = getDateOnlyWithTime;
177function 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}
185exports.getDatePreviousMonth = getDatePreviousMonth;
186function 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}
194exports.getDateNextMonth = getDateNextMonth;
195function 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}
201exports.convert24HourMeridiem = convert24HourMeridiem;
202function 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}
208exports.getIsPmFrom24Hour = getIsPmFrom24Hour;
209function 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}
216exports.get12HourFrom24Hour = get12HourFrom24Hour;
217function 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}
224exports.get24HourFrom12Hour = get24HourFrom12Hour;
225function isToday(date) {
226 return areSameDay(date, new Date());
227}
228exports.isToday = isToday;
229//# sourceMappingURL=dateUtils.js.map
\No newline at end of file