sheetjs
sheetjs copied to clipboard
Issue #1300 fix: fuzzydate strict date option regex
Hey! This fix refers to issue #1300
I made changes to two of the files to include regex options to parse dates in the following formats:
- mm dd yyyy
- mm dd yy
- dd mm yyyy
- dd mm yy
All the aforementioned date formats use the separators . or - or /
, e.g.:
- dd-mm-yy
- dd.mm.yy
- dd/mm/yy
This can be activated using the strictDate option in the fuzzydate function which is set to false
by default.
Let me know whether this solution is what you were looking for!
ES6 issues aside (we are targeting ES3, so no const or default parameter values or arrow functions) two comments:
-
the result of the match is not used, so RegExp#test probably should be used. You might also be missing a new RegExp somewhere.
-
how should the library interpret something ambiguous like
03-02-01
or01/02/03
?
Hey! I'll work on the changes for the first point soon, but as for the second - what do you think of including an option similar to dateNF
that allows a user to enter the date format as dd-mm-yy, mm-dd-yy
etc.?
Alternatively, if strictDates
is set to true, we can use dateNF
(or the newly defined similar variable as mentioned above) to match any date values to the regex options defined in this PR here
What do you think?
Just following up on my last comment - after reading #2196 and #1646, I think it might make more sense to make the following changes:
- Change
strictDates
to a string that can bedd-mm
,mm-dd
, ortrue
- Refactor
STRICT_DATE_REGEX
to be an Object with the keysdd-mm
and `mm-dd with their respective regex values
This can allow for stricter dates while also letting us switch dd-mm
to mm-dd
internally since the JS Date function only uses mm-dd
. In case strictDates
is true
, we can test it with all STRICT_DATE_REGEX
values and return the first match (which will, by nature, be in the mm-dd
format).
I'm currently working on these changes, so let me know if this sounds good!