commit
message
[Date.ts] ExcelDate no longer used in Date.ts
author
Ben Vogt <[email protected]>
date
2017-05-06 00:46:19
stats
1 file(s) changed,
29 insertions(+),
39 deletions(-)
files
src/Formulas/Date.ts
1diff --git a/src/Formulas/Date.ts b/src/Formulas/Date.ts
2index 661da12..ad9d098 100644
3--- a/src/Formulas/Date.ts
4+++ b/src/Formulas/Date.ts
5@@ -12,7 +12,6 @@ import {
6 RefError
7 } from "../Errors";
8 import {
9- ExcelDate,
10 ORIGIN_MOMENT
11 } from "../ExcelDate";
12 import {
13@@ -83,9 +82,9 @@ var EDATE = function (...values) : number {
14 throw new NumError("Function EDATE parameter 1 value is " + startDateNumber+ ". It should be greater than or equal to 0.");
15 }
16 var months = Math.floor(TypeCaster.firstValueAsNumber(values[1]));
17- // While ExcelDate.toNumber() will return an inclusive count of days since 1900/1/1, moment.Moment.add assumes
18- // exclusive count of days.
19- return new ExcelDate(moment.utc(ORIGIN_MOMENT).add(startDateNumber, "days").add(months, "months")).toNumber();
20+ // While momentToDayNumber will return an inclusive count of days since 1900/1/1, moment.Moment.add assumes exclusive
21+ // count of days.
22+ return TypeCaster.momentToDayNumber(moment.utc(ORIGIN_MOMENT).add(startDateNumber, "days").add(months, "months"));
23 };
24
25
26@@ -105,8 +104,6 @@ var EOMONTH = function (...values) : number {
27 throw new NumError("Function EOMONTH parameter 1 value is " + startDateNumber + ". It should be greater than or equal to 0.");
28 }
29 var months = Math.floor(TypeCaster.firstValueAsNumber(values[1]));
30- // While ExcelDate.toNumber() will return an inclusive count of days since 1900/1/1, moment.Moment.add assumes
31- // exclusive count of days.
32 return TypeCaster.momentToDayNumber(moment.utc(ORIGIN_MOMENT)
33 .add(startDateNumber, "days")
34 .add(months, "months")
35@@ -464,8 +461,8 @@ var YEARFRAC = function (...values) : number {
36 var feb29Between = function (date1, date2) {
37 // Requires year2 == (year1 + 1) or year2 == year1
38 // Returns TRUE if February 29 is between the two dates (date1 may be February 29), with two possibilities:
39- // year1 is a leap year and date1 <= Februay 29 of year1
40- // year2 is a leap year and date2 > Februay 29 of year2
41+ // year1 is a leap year and date1 <= February 29 of year1
42+ // year2 is a leap year and date2 > February 29 of year2
43 var mar1year1 = moment.utc(new Date(date1.year(), 2, 1));
44 if (moment.utc([date1.year()]).isLeapYear() && date1.diff(mar1year1) < 0 && date2.diff(mar1year1) >= 0) {
45 return true;
46@@ -622,9 +619,7 @@ var NETWORKDAYS = function (...values) : number {
47 throw new RefError("Reference does not exist.");
48 }
49 for (var holidayDateValue of values[2]) {
50- if (holidayDateValue instanceof ExcelDate) {
51- holidays.push(holidayDateValue.toNumber());
52- } else if (typeof holidayDateValue === "number") {
53+ if (typeof holidayDateValue === "number") {
54 holidays.push(holidayDateValue);
55 } else {
56 throw new ValueError("NETWORKDAYS expects number values. But '" + holidayDateValue + "' is a " +
57@@ -640,18 +635,18 @@ var NETWORKDAYS = function (...values) : number {
58 start = swap;
59 }
60
61- var c = moment.utc(TypeCaster.numberToMoment(start));
62+ var countMoment = moment.utc(TypeCaster.numberToMoment(start));
63 var weekendDays = [6, 0]; // Default weekend_days.
64 var days = end - start + 1;
65 var networkDays = days;
66 var j = 0;
67 while (j < days) {
68- if (weekendDays.indexOf(c.day()) >= 0) {
69+ if (weekendDays.indexOf(countMoment.day()) >= 0) {
70 networkDays--;
71- } else if (hasHolidays && holidays.indexOf(new ExcelDate(c).toNumber()) > -1) {
72+ } else if (hasHolidays && holidays.indexOf(TypeCaster.momentToDayNumber(countMoment)) > -1) {
73 networkDays--;
74 }
75- c.add(1, 'days');
76+ countMoment.add(1, 'days');
77 j++;
78 }
79 // If the we swapped the start and end date, the result should be a negative number of network days.
80@@ -737,9 +732,7 @@ var NETWORKDAYS$INTL = function (...values) : number {
81 throw new RefError("Reference does not exist.");
82 }
83 for (var holidayDateValue of values[3]) {
84- if (holidayDateValue instanceof ExcelDate) {
85- holidays.push(holidayDateValue.toNumber());
86- } else if (typeof holidayDateValue === "number") {
87+ if (typeof holidayDateValue === "number") {
88 holidays.push(holidayDateValue);
89 } else {
90 throw new ValueError("NETWORKDAYS.INTL expects number values. But '" + holidayDateValue + "' is a " +
91@@ -755,17 +748,17 @@ var NETWORKDAYS$INTL = function (...values) : number {
92 start = swap;
93 }
94
95- var c = moment.utc(TypeCaster.numberToMoment(start));
96+ var countMoment = moment.utc(TypeCaster.numberToMoment(start));
97 var days = end - start + 1;
98 var networkDays = days;
99 var j = 0;
100 while (j < days) {
101- if (weekendDays.indexOf(c.day()) >= 0) {
102+ if (weekendDays.indexOf(countMoment.day()) >= 0) {
103 networkDays--;
104- } else if (hasHolidays && holidays.indexOf(new ExcelDate(c).toNumber()) > -1) {
105+ } else if (hasHolidays && holidays.indexOf(TypeCaster.momentToDayNumber(countMoment)) > -1) {
106 networkDays--;
107 }
108- c.add(1, 'days');
109+ countMoment.add(1, 'days');
110 j++;
111 }
112 // If the we swapped the start and end date, the result should be a negative number of network days.
113@@ -782,7 +775,7 @@ var NETWORKDAYS$INTL = function (...values) : number {
114 */
115 var NOW = function (...values) : number {
116 ArgsChecker.checkLength(values, 0);
117- return new ExcelDate(moment.utc()).toNumber();
118+ return TypeCaster.momentToNumber(moment.utc());
119 };
120
121 /**
122@@ -792,7 +785,7 @@ var NOW = function (...values) : number {
123 */
124 var TODAY = function (...values) : number {
125 ArgsChecker.checkLength(values, 0);
126- return new ExcelDate(moment.utc().startOf("day")).toNumberFloored();
127+ return TypeCaster.momentToNumber(moment.utc().startOf("day"));
128 };
129
130
131@@ -842,9 +835,7 @@ var WORKDAY = function (...values) : number {
132 throw new RefError("Reference does not exist.");
133 }
134 for (var holidayDateValue of values[2]) {
135- if (holidayDateValue instanceof ExcelDate) {
136- holidays.push(holidayDateValue.toNumber());
137- } else if (typeof holidayDateValue === "number") {
138+ if (typeof holidayDateValue === "number") {
139 holidays.push(holidayDateValue);
140 } else {
141 throw new ValueError("WORKDAY expects number values. But '" + holidayDateValue + "' is a " +
142@@ -857,15 +848,15 @@ var WORKDAY = function (...values) : number {
143 }
144
145 var weekendDays = [0, 6];
146- var cd = moment.utc(TypeCaster.numberToMoment(start));
147+ var countMoment = moment.utc(TypeCaster.numberToMoment(start));
148 var j = 0;
149 while (j < days) {
150- cd.add(1, 'days');
151- if (weekendDays.indexOf(cd.day()) < 0 && holidays.indexOf(new ExcelDate(cd).toNumber()) < 0) {
152+ countMoment.add(1, 'days');
153+ if (weekendDays.indexOf(countMoment.day()) < 0 && holidays.indexOf(TypeCaster.momentToDayNumber(countMoment)) < 0) {
154 j++;
155 }
156 }
157- return new ExcelDate(cd).toNumber();
158+ return TypeCaster.momentToDayNumber(countMoment);
159 };
160
161
162@@ -943,9 +934,7 @@ var WORKDAY$INTL = function (...values) : number {
163 throw new RefError("Reference does not exist.");
164 }
165 for (var holidayDateValue of values[3]) {
166- if (holidayDateValue instanceof ExcelDate) {
167- holidays.push(holidayDateValue.toNumber());
168- } else if (typeof holidayDateValue === "number") {
169+ if (typeof holidayDateValue === "number") {
170 holidays.push(holidayDateValue);
171 } else {
172 throw new ValueError("WORKDAY expects number values. But '" + holidayDateValue + "' is a " +
173@@ -956,15 +945,15 @@ var WORKDAY$INTL = function (...values) : number {
174 holidays.push(TypeCaster.valueToNumber(values[3]));
175 }
176 }
177- var cd = moment.utc(TypeCaster.numberToMoment(start));
178+ var countMoment = moment.utc(TypeCaster.numberToMoment(start));
179 var j = 0;
180 while (j < days) {
181- cd.add(1, 'days');
182- if (weekendDays.indexOf(cd.day()) < 0 && holidays.indexOf(new ExcelDate(cd).toNumber()) < 0) {
183+ countMoment.add(1, 'days');
184+ if (weekendDays.indexOf(countMoment.day()) < 0 && holidays.indexOf(TypeCaster.momentToDayNumber(countMoment)) < 0) {
185 j++;
186 }
187 }
188- return new ExcelDate(cd).toNumber();
189+ return TypeCaster.momentToDayNumber(countMoment);
190 };
191
192 export {