DateParser.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
  2. import _createClass from "@babel/runtime/helpers/esm/createClass";
  3. import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
  4. import _inherits from "@babel/runtime/helpers/esm/inherits";
  5. import _createSuper from "@babel/runtime/helpers/esm/createSuper";
  6. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  7. import { isLeapYearIndex, parseNDigits, parseNumericPattern } from "../utils.js";
  8. import { Parser } from "../Parser.js";
  9. import { numericPatterns } from "../constants.js";
  10. var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  11. var DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  12. // Day of the month
  13. export var DateParser = /*#__PURE__*/function (_Parser) {
  14. _inherits(DateParser, _Parser);
  15. var _super = _createSuper(DateParser);
  16. function DateParser() {
  17. var _this;
  18. _classCallCheck(this, DateParser);
  19. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  20. args[_key] = arguments[_key];
  21. }
  22. _this = _super.call.apply(_super, [this].concat(args));
  23. _defineProperty(_assertThisInitialized(_this), "priority", 90);
  24. _defineProperty(_assertThisInitialized(_this), "subPriority", 1);
  25. _defineProperty(_assertThisInitialized(_this), "incompatibleTokens", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);
  26. return _this;
  27. }
  28. _createClass(DateParser, [{
  29. key: "parse",
  30. value: function parse(dateString, token, match) {
  31. switch (token) {
  32. case 'd':
  33. return parseNumericPattern(numericPatterns.date, dateString);
  34. case 'do':
  35. return match.ordinalNumber(dateString, {
  36. unit: 'date'
  37. });
  38. default:
  39. return parseNDigits(token.length, dateString);
  40. }
  41. }
  42. }, {
  43. key: "validate",
  44. value: function validate(date, value) {
  45. var year = date.getUTCFullYear();
  46. var isLeapYear = isLeapYearIndex(year);
  47. var month = date.getUTCMonth();
  48. if (isLeapYear) {
  49. return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];
  50. } else {
  51. return value >= 1 && value <= DAYS_IN_MONTH[month];
  52. }
  53. }
  54. }, {
  55. key: "set",
  56. value: function set(date, _flags, value) {
  57. date.setUTCDate(value);
  58. date.setUTCHours(0, 0, 0, 0);
  59. return date;
  60. }
  61. }]);
  62. return DateParser;
  63. }(Parser);