1 |
|
2 | import { padStart } from './helpers';
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | export var dateutil;
|
9 | (function (dateutil) {
|
10 | dateutil.MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
11 | |
12 |
|
13 |
|
14 | dateutil.ONE_DAY = 1000 * 60 * 60 * 24;
|
15 | |
16 |
|
17 |
|
18 | dateutil.MAXYEAR = 9999;
|
19 | |
20 |
|
21 |
|
22 |
|
23 |
|
24 | dateutil.ORDINAL_BASE = new Date(Date.UTC(1970, 0, 1));
|
25 | |
26 |
|
27 |
|
28 |
|
29 | dateutil.PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];
|
30 | |
31 |
|
32 |
|
33 | dateutil.getYearDay = function (date) {
|
34 | var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
|
35 | return (Math.ceil((dateNoTime.valueOf() -
|
36 | new Date(date.getUTCFullYear(), 0, 1).valueOf()) /
|
37 | dateutil.ONE_DAY) + 1);
|
38 | };
|
39 | dateutil.isLeapYear = function (year) {
|
40 | return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
41 | };
|
42 | dateutil.isDate = function (value) {
|
43 | return value instanceof Date;
|
44 | };
|
45 | dateutil.isValidDate = function (value) {
|
46 | return dateutil.isDate(value) && !isNaN(value.getTime());
|
47 | };
|
48 | |
49 |
|
50 |
|
51 | dateutil.tzOffset = function (date) {
|
52 | return date.getTimezoneOffset() * 60 * 1000;
|
53 | };
|
54 | |
55 |
|
56 |
|
57 | dateutil.daysBetween = function (date1, date2) {
|
58 |
|
59 |
|
60 | var date1ms = date1.getTime() - dateutil.tzOffset(date1);
|
61 | var date2ms = date2.getTime() - dateutil.tzOffset(date2);
|
62 |
|
63 | var differencems = date1ms - date2ms;
|
64 |
|
65 | return Math.round(differencems / dateutil.ONE_DAY);
|
66 | };
|
67 | |
68 |
|
69 |
|
70 | dateutil.toOrdinal = function (date) {
|
71 | return dateutil.daysBetween(date, dateutil.ORDINAL_BASE);
|
72 | };
|
73 | |
74 |
|
75 |
|
76 | dateutil.fromOrdinal = function (ordinal) {
|
77 | return new Date(dateutil.ORDINAL_BASE.getTime() + ordinal * dateutil.ONE_DAY);
|
78 | };
|
79 | dateutil.getMonthDays = function (date) {
|
80 | var month = date.getUTCMonth();
|
81 | return month === 1 && dateutil.isLeapYear(date.getUTCFullYear())
|
82 | ? 29
|
83 | : dateutil.MONTH_DAYS[month];
|
84 | };
|
85 | |
86 |
|
87 |
|
88 | dateutil.getWeekday = function (date) {
|
89 | return dateutil.PY_WEEKDAYS[date.getUTCDay()];
|
90 | };
|
91 | |
92 |
|
93 |
|
94 | dateutil.monthRange = function (year, month) {
|
95 | var date = new Date(Date.UTC(year, month, 1));
|
96 | return [dateutil.getWeekday(date), dateutil.getMonthDays(date)];
|
97 | };
|
98 | |
99 |
|
100 |
|
101 | dateutil.combine = function (date, time) {
|
102 | time = time || date;
|
103 | return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));
|
104 | };
|
105 | dateutil.clone = function (date) {
|
106 | var dolly = new Date(date.getTime());
|
107 | return dolly;
|
108 | };
|
109 | dateutil.cloneDates = function (dates) {
|
110 | var clones = [];
|
111 | for (var i = 0; i < dates.length; i++) {
|
112 | clones.push(dateutil.clone(dates[i]));
|
113 | }
|
114 | return clones;
|
115 | };
|
116 | |
117 |
|
118 |
|
119 | dateutil.sort = function (dates) {
|
120 | dates.sort(function (a, b) {
|
121 | return a.getTime() - b.getTime();
|
122 | });
|
123 | };
|
124 | dateutil.timeToUntilString = function (time, utc) {
|
125 | if (utc === void 0) { utc = true; }
|
126 | var date = new Date(time);
|
127 | return [
|
128 | padStart(date.getUTCFullYear().toString(), 4, '0'),
|
129 | padStart(date.getUTCMonth() + 1, 2, '0'),
|
130 | padStart(date.getUTCDate(), 2, '0'),
|
131 | 'T',
|
132 | padStart(date.getUTCHours(), 2, '0'),
|
133 | padStart(date.getUTCMinutes(), 2, '0'),
|
134 | padStart(date.getUTCSeconds(), 2, '0'),
|
135 | utc ? 'Z' : '',
|
136 | ].join('');
|
137 | };
|
138 | dateutil.untilStringToDate = function (until) {
|
139 | var re = /^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/;
|
140 | var bits = re.exec(until);
|
141 | if (!bits)
|
142 | throw new Error("Invalid UNTIL value: ".concat(until));
|
143 | return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));
|
144 | };
|
145 | })(dateutil || (dateutil = {}));
|
146 | export default dateutil;
|
147 |
|
\ | No newline at end of file |