spreadsheet
typeScript/javascript spreadsheet parser, with formulas.
git clone https://git.vogt.world/spreadsheet.git
Log | Files | README.md
← Commit log
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 {