UNPKG

date-object

Version:

JavaScript library for working with Date and Time in different calendars and locals

1,378 lines (1,364 loc) 46.7 kB
'use strict'; function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function () {}; return { s: F, n: function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (e) { throw e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function () { it = it.call(o); }, n: function () { var step = it.next(); normalCompletion = step.done; return step; }, e: function (e) { didErr = true; err = e; }, f: function () { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var gregorian_en = { name: "gregorian_en", months: [["January", "Jan"], ["February", "Feb"], ["March", "Mar"], ["April", "Apr"], ["May", "May"], ["June", "Jun"], ["July", "Jul"], ["August", "Aug"], ["September", "Sep"], ["October", "Oct"], ["November", "Nov"], ["December", "Dec"]], weekDays: [["Saturday", "Sat"], ["Sunday", "Sun"], ["Monday", "Mon"], ["Tuesday", "Tue"], ["Wednesday", "Wed"], ["Thursday", "Thu"], ["Friday", "Fri"]], digits: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], meridiems: [["AM", "am"], ["PM", "pm"]] }; var gregorian$1 = { name: "gregorian", startYear: 1, yearLength: 365, epoch: 1721424, century: 20, weekStartDayIndex: 1, getMonthLengths: function getMonthLengths(isLeap) { return [31, isLeap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; }, isLeap: function isLeap(year) { return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; }, getLeaps: function getLeaps(currentYear) { if (currentYear === 0) return; var year = currentYear > 0 ? 1 : -1; var leaps = [], condition = function condition() { return currentYear > 0 ? year <= currentYear : currentYear <= year; }, increase = function increase() { return currentYear > 0 ? year++ : year--; }; while (condition()) { if (this.isLeap(year)) leaps.push(year); increase(); } return leaps; }, getDayOfYear: function getDayOfYear(_ref) { var year = _ref.year, month = _ref.month, day = _ref.day; var monthLengths = this.getMonthLengths(this.isLeap(year)); for (var i = 0; i < month.index; i++) { day += monthLengths[i]; } return day; }, getAllDays: function getAllDays(date) { var year = date.year; return this.yearLength * (year - 1) + this.leapsLength(year) + this.getDayOfYear(date); }, leapsLength: function leapsLength(year) { return ((year - 1) / 4 | 0) + (-((year - 1) / 100) | 0) + ((year - 1) / 400 | 0); }, guessYear: function guessYear(days, currentYear) { var year = ~~(days / 365.24); return year + (currentYear > 0 ? 1 : -1); } }; var gregorian_1 = gregorian$1; var en = gregorian_en; var gregorian = gregorian_1; function isObject(object) { return object && object.constructor === Object; } function toNumber(value) { if (!isNaN(value)) return parseInt(value); } function isArray(value) { return Array.isArray(value); } function notInRange(value, min, max) { return value === undefined || value < min || value > max; } var _year = /*#__PURE__*/new WeakMap(); var _month = /*#__PURE__*/new WeakMap(); var _day = /*#__PURE__*/new WeakMap(); var _hour = /*#__PURE__*/new WeakMap(); var _minute = /*#__PURE__*/new WeakMap(); var _second = /*#__PURE__*/new WeakMap(); var _millisecond = /*#__PURE__*/new WeakMap(); var _format = /*#__PURE__*/new WeakMap(); var _locale = /*#__PURE__*/new WeakMap(); var _calendar = /*#__PURE__*/new WeakMap(); var _isUTC = /*#__PURE__*/new WeakMap(); var _custom = /*#__PURE__*/new WeakMap(); var _isoDate = /*#__PURE__*/new WeakMap(); var _ignoreList = /*#__PURE__*/new WeakMap(); var _mustFix = /*#__PURE__*/new WeakMap(); var _getKeyValue = /*#__PURE__*/new WeakMap(); var _mustJumpFromZero = /*#__PURE__*/new WeakMap(); var _fix = /*#__PURE__*/new WeakMap(); var _getWeekDays = /*#__PURE__*/new WeakMap(); var DateObject = /*#__PURE__*/function () { function DateObject(object) { var _this = this; _classCallCheck(this, DateObject); _classPrivateFieldInitSpec(this, _year, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _month, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _day, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _hour, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _minute, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _second, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _millisecond, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _format, { writable: true, value: void 0 }); _classPrivateFieldInitSpec(this, _locale, { writable: true, value: en }); _classPrivateFieldInitSpec(this, _calendar, { writable: true, value: gregorian }); _classPrivateFieldInitSpec(this, _isUTC, { writable: true, value: false }); _classPrivateFieldInitSpec(this, _custom, { writable: true, value: {} }); _classPrivateFieldInitSpec(this, _isoDate, { writable: true, value: /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d\d\dZ$/ }); _classPrivateFieldInitSpec(this, _ignoreList, { writable: true, value: [] }); _classPrivateFieldInitSpec(this, _mustFix, { writable: true, value: true }); _classPrivateFieldInitSpec(this, _getKeyValue, { writable: true, value: function value(token, string) { switch (token) { case "YYYY": return ["year", string]; case "YY": return ["year", "".concat(_classPrivateFieldGet(_this, _calendar).century).concat(string)]; case "MMMM": case "MMM": return ["month", _this.months.findIndex(function (_ref) { var name = _ref.name, shortName = _ref.shortName; return new RegExp(string, "i").test(name + shortName); }) + 1]; case "MM": case "M": return ["month", string]; case "DD": case "D": return ["day", string]; case "HH": case "H": return ["hour", string]; case "hh": case "h": var hour = toNumber(string); return ["hour", hour > 12 ? hour - 12 : hour]; case "mm": case "m": return ["minute", string]; case "ss": case "s": return ["second", string]; case "SSS": case "SS": case "S": return ["millisecond", string]; default: return []; } } }); _classPrivateFieldInitSpec(this, _mustJumpFromZero, { writable: true, value: function value() { /** * All supported calendars in this library (except Indian calendar) start at * year:1, month:1, day:1 (Indian date start at year:0, month:1, day:1) * so the year before year 1 is year -1 * @see https://en.wikipedia.org/w/index.php?title=Indian_national_calendar&oldid=360117718 */ return _classPrivateFieldGet(_this, _year) === 0 && _classPrivateFieldGet(_this, _calendar).startYear !== 0; } }); _classPrivateFieldInitSpec(this, _fix, { writable: true, value: function value() { if (!_classPrivateFieldGet(_this, _mustFix) || !_this.isValid) return; var floor = Math.floor, getCoefficient = function getCoefficient(number) { return number < 0 ? -1 : 1; }, isIncorrect = function isIncorrect(value, maximum) { return value >= maximum || value < 0; }, num = function num(val1, val2) { return val1 < 0 && floor(val1 % val2) !== -0 ? val2 : 0; }, getCurrectValue = function getCurrectValue(value, maximum) { return [getCoefficient(value) * Math.abs(floor(value / maximum)), num(value, maximum) + floor(value % maximum)]; }, setMonth = function setMonth() { if (_classPrivateFieldGet(_this, _month) < 0 || _classPrivateFieldGet(_this, _month) > 11) { var startYear = _classPrivateFieldGet(_this, _month) < 0 ? -1 : 1; var _getCurrectValue = getCurrectValue(_classPrivateFieldGet(_this, _month), 12), _getCurrectValue2 = _slicedToArray(_getCurrectValue, 2), extraAmount = _getCurrectValue2[0], month = _getCurrectValue2[1]; _classPrivateFieldSet(_this, _year, _classPrivateFieldGet(_this, _year) + extraAmount); _classPrivateFieldSet(_this, _month, month); if (_classPrivateFieldGet(_this, _mustJumpFromZero).call(_this)) _classPrivateFieldSet(_this, _year, startYear); } }, properties = [["millisecond", "second", 1000], ["second", "minute", 60], ["minute", "hour", 60], ["hour", "day", 24]]; /** * In order to fixing some incorrect values and * to prevent from running the nested #fix() method, * we set the #mustFix to false. */ _classPrivateFieldSet(_this, _mustFix, false); properties.forEach(function (_ref2) { var _ref3 = _slicedToArray(_ref2, 3), currentProperty = _ref3[0], nextProperty = _ref3[1], maximum = _ref3[2]; if (isIncorrect(_this[currentProperty], maximum)) { var _getCurrectValue3 = getCurrectValue(_this[currentProperty], maximum), _getCurrectValue4 = _slicedToArray(_getCurrectValue3, 2), extraAmount = _getCurrectValue4[0], value = _getCurrectValue4[1]; _this[nextProperty] += extraAmount; _this[currentProperty] = value; } }); _classPrivateFieldSet(_this, _mustFix, true); setMonth(); while (_classPrivateFieldGet(_this, _day) < -_classPrivateFieldGet(_this, _calendar).yearLength || _classPrivateFieldGet(_this, _day) > _classPrivateFieldGet(_this, _calendar).yearLength) { if (_classPrivateFieldGet(_this, _month) > 0) { var months = _classPrivateFieldGet(_this, _calendar).getMonthLengths(_this.isLeap); for (var i = 0; i < _classPrivateFieldGet(_this, _month); i++) _classPrivateFieldSet(_this, _day, _classPrivateFieldGet(_this, _day) + months[i]); _classPrivateFieldSet(_this, _month, 0); } var yearLength = _this.isLeap ? _this.calendar.yearLength + 1 : _this.calendar.yearLength; _classPrivateFieldSet(_this, _day, _classPrivateFieldGet(_this, _day) + yearLength * (_classPrivateFieldGet(_this, _day) < 0 ? 1 : -1)); _classPrivateFieldSet(_this, _year, _classPrivateFieldGet(_this, _year) + (_classPrivateFieldGet(_this, _day) < 0 ? -1 : 1)); } while (true) { var _this$month; setMonth(); while (_classPrivateFieldGet(_this, _day) < 1) { _classPrivateFieldSet(_this, _month, _classPrivateFieldGet(_this, _month) - 1); setMonth(); _classPrivateFieldSet(_this, _day, _this.month.length + _classPrivateFieldGet(_this, _day)); } if (_classPrivateFieldGet(_this, _day) <= _this.month.length || isNaN(_classPrivateFieldGet(_this, _day))) break; _classPrivateFieldSet(_this, _day, _classPrivateFieldGet(_this, _day) - _this.month.length); _classPrivateFieldSet(_this, _month, (_this$month = _classPrivateFieldGet(_this, _month), _this$month++, _this$month)); } if (!_classPrivateFieldGet(_this, _hour)) _classPrivateFieldSet(_this, _hour, 0); if (!_classPrivateFieldGet(_this, _minute)) _classPrivateFieldSet(_this, _minute, 0); if (!_classPrivateFieldGet(_this, _second)) _classPrivateFieldSet(_this, _second, 0); if (!_classPrivateFieldGet(_this, _millisecond)) _classPrivateFieldSet(_this, _millisecond, 0); } }); _classPrivateFieldInitSpec(this, _getWeekDays, { writable: true, value: function value() { return (_classPrivateFieldGet(_this, _custom).weekDays || _classPrivateFieldGet(_this, _locale).weekDays).map(function (_ref4, i) { var _ref5 = _slicedToArray(_ref4, 2), name = _ref5[0], shortName = _ref5[1]; var index = i - _this.weekStartDayIndex; if (index < 0) index += 7; return { name: name, shortName: shortName, index: index, number: index + 1, toString: function toString() { return this.number.toString(); }, valueOf: function valueOf() { return this.number; } }; }); } }); var obj = isObject(object) ? _objectSpread2({}, object) : object; var mustFix = true; if (!obj || typeof obj === "boolean") obj = { date: new Date() }; if (!isObject(obj)) obj = { date: obj }; if (Object.keys(obj).length === 0) return; if (isObject(obj.calendar)) _classPrivateFieldSet(this, _calendar, obj.calendar); if (isObject(obj.locale)) _classPrivateFieldSet(this, _locale, obj.locale); if (isNaN(obj.year) && isNaN(obj.month) && isNaN(obj.day) && !obj.date) { obj.date = new Date(); } if (obj.date) { if (typeof obj.date === "string" && obj.format) _classPrivateFieldSet(this, _format, obj.format); this.setDate(obj.date); if (obj.calendar) this.convert(obj.calendar); mustFix = false; } delete obj.calendar; delete obj.locale; delete obj.date; for (var key in obj) this.set(key, obj[key]); if (_classPrivateFieldGet(this, _mustJumpFromZero).call(this)) _classPrivateFieldSet(this, _year, -1); if (mustFix) _classPrivateFieldGet(this, _fix).call(this); } _createClass(DateObject, [{ key: "parse", value: function parse(date) { if (!date) return this; var format = _classPrivateFieldGet(this, _format); var digits = _classPrivateFieldGet(this, _locale).digits; //converting current digits to english var _iterator = _createForOfIteratorHelper(digits), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var digit = _step.value; date = date.replace(new RegExp(digit, "g"), digits.indexOf(digit)); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } if (!format) { var regex = /(-?\d{2,4})?\W?([A-z]{3,9}|\d{1,2})?\W?(\d{1,2})?\W?(\d{1,2})?\W?(\d{1,2})?\W?(\d{1,2})?\W?(\d{1,3})?\W?(am|pm)?/; var _date$match = date.match(regex), _date$match2 = _toArray(_date$match), array = _date$match2.slice(1); var month = array[1]; if (month) { if (/\d+/.test(month)) { month = toNumber(month) - 1; } else { month = this.months.findIndex(function ($month) { return new RegExp(month, "i").test($month.name); }); } } array[1] = month; var _array$map = array.map(toNumber), _array$map2 = _slicedToArray(_array$map, 7), year = _array$map2[0], $month = _array$map2[1], day = _array$map2[2], hour = _array$map2[3], minute = _array$map2[4], second = _array$map2[5], millisecond = _array$map2[6]; _classPrivateFieldSet(this, _year, year); _classPrivateFieldSet(this, _month, $month); _classPrivateFieldSet(this, _day, day); _classPrivateFieldSet(this, _hour, hour); _classPrivateFieldSet(this, _minute, minute); _classPrivateFieldSet(this, _second, second); _classPrivateFieldSet(this, _millisecond, millisecond); } else { var tokens = format.split(/[^\w\u0600-\u06FF]/), values = date.split(/[^\w\u0600-\u06FF]/); for (var i = 0; i < tokens.length; i++) { this.set.apply(this, _toConsumableArray(_classPrivateFieldGet(this, _getKeyValue).call(this, tokens[i], values[i]))); } } var _classPrivateFieldGet2 = _slicedToArray(_classPrivateFieldGet(this, _locale).meridiems[1], 2), PM = _classPrivateFieldGet2[0], pm = _classPrivateFieldGet2[1]; if (_classPrivateFieldGet(this, _hour) < 12 && (date.includes(PM) || date.includes(pm))) { _classPrivateFieldSet(this, _hour, _classPrivateFieldGet(this, _hour) + 12); } _classPrivateFieldGet(this, _fix).call(this); return this; } }, { key: "convert", value: function convert() { var calendar = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : gregorian; var locale = arguments.length > 1 ? arguments[1] : undefined; if (isObject(locale)) _classPrivateFieldSet(this, _locale, locale); if (!isObject(calendar) || calendar.name === _classPrivateFieldGet(this, _calendar).name) { return this; } var days = this.toJulianDay() - calendar.epoch; var target = new DateObject({ calendar: calendar, year: calendar.guessYear(days, _classPrivateFieldGet(this, _year)), month: 1, day: 1 }); target.day += days - target.toDays(); _classPrivateFieldSet(this, _year, target.year); _classPrivateFieldSet(this, _month, target.month.index); _classPrivateFieldSet(this, _day, target.day); _classPrivateFieldSet(this, _calendar, calendar); return this; } }, { key: "format", value: function format(_format2, ignoreList) { if (!this.isValid || _format2 && typeof _format2 !== "string") return ""; if (!_format2) _format2 = _classPrivateFieldGet(this, _format) || "YYYY/MM/DD"; if (!isArray(ignoreList)) ignoreList = []; ignoreList = ignoreList.concat(_classPrivateFieldGet(this, _ignoreList)); ignoreList = ignoreList.filter(function (item) { if (typeof item !== "string") { console.warn("type of all items in the ignore list must be string, found", _typeof(item)); return false; } return true; }).map(function (string) { return string.replace(/[*/+\-()[\]{}\s$^]/g, function (w) { return "\\" + w; }); }); var regex = new RegExp("".concat(ignoreList.join("|")).concat(ignoreList.length > 0 ? "|" : "", "YYYY|YY|MMMM|MMM|MM|M|WW|W|DDDD|DDD|DD|D|dddd|ddd|dd|d|HH|H|hh|h|mm|m|ss|s|SSS|SS|S|A|a|."), "g"), array = _format2.match(regex) || [], result = ""; var _iterator2 = _createForOfIteratorHelper(array), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var item = _step2.value; var value = this.getValue(item); result += ignoreList.includes(item) ? item : value === 0 ? value : value || item; } //converting to locale digits } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } var digits = this.digits; return result.replace(/[0-9]/g, function (w) { return digits[w]; }); } /** * @deprecated */ }, { key: "getProperty", value: function getProperty(key) { return this.getValue(key); } }, { key: "getValue", value: function getValue(key) { var pad = function pad(number) { return number < 10 ? "0" + number : number; }; switch (key) { case "YYYY": return this.year; case "YY": return this.year.toString().substring(2, 4); case "MMMM": return this.month.name; case "MMM": return this.month.shortName; case "MM": return pad(this.month.number); case "M": return this.month.number; case "WW": return pad(this.weekOfYear); case "W": return this.weekOfYear; case "DDDD": case "DDD": return this.dayOfYear; case "DD": return pad(this.day); case "D": return this.day; case "HH": return pad(this.hour); case "H": return this.hour; case "dddd": return this.weekDay.name; case "ddd": return this.weekDay.shortName; case "dd": return pad(this.weekDay.number); case "d": return this.weekDay.number; case "hh": return pad(this.hour > 12 ? this.hour - 12 : this.hour || 12); case "h": return this.hour > 12 ? this.hour - 12 : this.hour || 12; case "mm": return pad(this.minute); case "m": return this.minute; case "ss": return pad(this.second); case "s": return this.second; case "SSS": return _classPrivateFieldGet(this, _millisecond) < 10 ? "00".concat(_classPrivateFieldGet(this, _millisecond)) : _classPrivateFieldGet(this, _millisecond) < 100 ? "0".concat(_classPrivateFieldGet(this, _millisecond)) : _classPrivateFieldGet(this, _millisecond); case "SS": return _classPrivateFieldGet(this, _millisecond) < 10 ? "00" : _classPrivateFieldGet(this, _millisecond) < 100 ? ("0" + _classPrivateFieldGet(this, _millisecond)).substring(2, 0) : _classPrivateFieldGet(this, _millisecond).toString().substring(0, 2); case "S": return _classPrivateFieldGet(this, _millisecond) < 10 ? "0" : _classPrivateFieldGet(this, _millisecond) < 100 ? "0" : _classPrivateFieldGet(this, _millisecond).toString().substring(0, 1); case "a": return this.hour >= 12 ? _classPrivateFieldGet(this, _locale).meridiems[1][1] : _classPrivateFieldGet(this, _locale).meridiems[0][1]; case "A": return this.hour >= 12 ? _classPrivateFieldGet(this, _locale).meridiems[1][0] : _classPrivateFieldGet(this, _locale).meridiems[0][0]; default: return ""; } } }, { key: "setYear", value: function setYear(number) { this.year = number; return this; } }, { key: "setMonths", value: function setMonths(value) { this.months = value; return this; } }, { key: "setMonth", value: function setMonth(number) { this.month = number; return this; } }, { key: "setWeekDays", value: function setWeekDays(value) { this.weekDays = value; return this; } }, { key: "setDigits", value: function setDigits(value) { this.digits = value; return this; } }, { key: "setDay", value: function setDay(number) { this.day = number; return this; } }, { key: "setHour", value: function setHour(number) { this.hour = number; return this; } }, { key: "setMinute", value: function setMinute(number) { this.minute = number; return this; } }, { key: "setSecond", value: function setSecond(number) { this.second = number; return this; } }, { key: "setMillisecond", value: function setMillisecond(number) { this.millisecond = number; return this; } }, { key: "setFormat", value: function setFormat(format) { _classPrivateFieldSet(this, _format, format); return this; } }, { key: "setLocale", value: function setLocale(locale) { this.locale = locale; return this; } }, { key: "setCalendar", value: function setCalendar(calendar) { this.calendar = calendar; return this; } }, { key: "setDate", value: function setDate(date) { if (typeof date === "string") { if (_classPrivateFieldGet(this, _isoDate).test(date)) { date = new Date(date); } else { return this.parse(date); } } if (typeof date === "number") date = new Date(date); if (date instanceof Date) { _classPrivateFieldSet(this, _calendar, gregorian); _classPrivateFieldSet(this, _year, date.getFullYear()); _classPrivateFieldSet(this, _month, date.getMonth()); _classPrivateFieldSet(this, _day, date.getDate()); _classPrivateFieldSet(this, _hour, date.getHours()); _classPrivateFieldSet(this, _minute, date.getMinutes()); _classPrivateFieldSet(this, _second, date.getSeconds()); _classPrivateFieldSet(this, _millisecond, date.getMilliseconds()); _classPrivateFieldSet(this, _isUTC, false); } if (date instanceof DateObject) { _classPrivateFieldSet(this, _year, date.year); _classPrivateFieldSet(this, _month, date.month.index); _classPrivateFieldSet(this, _day, date.day); _classPrivateFieldSet(this, _hour, date.hour); _classPrivateFieldSet(this, _minute, date.minute); _classPrivateFieldSet(this, _second, date.second); _classPrivateFieldSet(this, _millisecond, date.millisecond); _classPrivateFieldSet(this, _locale, date.locale); _classPrivateFieldSet(this, _format, date._format); _classPrivateFieldSet(this, _calendar, date.calendar); _classPrivateFieldSet(this, _isUTC, date.isUTC); _classPrivateFieldSet(this, _ignoreList, date.ignoreList); _classPrivateFieldSet(this, _custom, date.custom); } return this; } }, { key: "setIgnoreList", value: function setIgnoreList(ignoreList) { this.ignoreList = ignoreList; return this; } }, { key: "set", value: function set(key, value) { if (key === undefined || key === null) return this; if (isObject(key)) { var object = _objectSpread2({}, key); if (object.date) { this.setDate(object.date); delete object.date; } if (object.calendar) { this.convert(object.calendar); delete object.calendar; } if (object.locale) { this.setLocale(object.locale); delete object.locale; } _classPrivateFieldSet(this, _mustFix, false); for (var _key in object) this.set(_key, object[_key]); _classPrivateFieldSet(this, _mustFix, true); _classPrivateFieldGet(this, _fix).call(this); return this; } if (key === "format") key = "_format"; try { this[key] = value; } catch (_unused) {} return this; } }, { key: "add", value: function add(duration, type) { duration = toNumber(duration); if (!duration || !type) return this; switch (type) { case "years": case "y": type = "year"; break; case "months": case "M": type = "month"; break; case "days": case "d": type = "day"; break; case "hours": case "h": type = "hour"; break; case "minutes": case "m": type = "minute"; break; case "seconds": case "s": type = "second"; break; case "milliseconds": case "ms": type = "millisecond"; break; } this[type] += duration; return this; } }, { key: "subtract", value: function subtract(duration, type) { return this.add(-duration, type); } }, { key: "toFirstOfYear", value: function toFirstOfYear() { this.month = 1; this.day = 1; return this; } }, { key: "toLastOfYear", value: function toLastOfYear() { if (this.day >= 29) this.day = 29; this.month = 12; this.toLastOfMonth(); return this; } }, { key: "toFirstOfMonth", value: function toFirstOfMonth() { _classPrivateFieldSet(this, _day, 1); return this; } }, { key: "toLastOfMonth", value: function toLastOfMonth() { _classPrivateFieldSet(this, _day, 0); _classPrivateFieldSet(this, _month, _classPrivateFieldGet(this, _month) + 1); _classPrivateFieldGet(this, _fix).call(this); return this; } }, { key: "toFirstOfWeek", value: function toFirstOfWeek() { this.day -= this.weekDay.index; return this; } }, { key: "toLastOfWeek", value: function toLastOfWeek() { this.day += 6 - this.weekDay.index; return this; } }, { key: "toFirstWeekOfYear", value: function toFirstWeekOfYear() { this.toFirstOfYear(); if (this.weekDay.index === 0) return this; return this.toLastOfWeek().setDay(this.day + 1); } }, { key: "toLastWeekOfYear", value: function toLastWeekOfYear() { return this.toLastOfYear().toFirstOfWeek(); } }, { key: "toString", value: function toString() { return this.format(); } }, { key: "toDate", value: function toDate() { var date = new DateObject(this); if (_classPrivateFieldGet(this, _calendar).name !== "gregorian") date.convert(gregorian); return new Date(date.year, date.month.index, date.day, date.hour, date.minute, date.second, date.millisecond); } }, { key: "toUTC", value: function toUTC() { if (!_classPrivateFieldGet(this, _isUTC)) { this.minute += this.toDate().getTimezoneOffset(); _classPrivateFieldSet(this, _isUTC, true); } return this; } }, { key: "toUnix", value: function toUnix() { return this.unix; } }, { key: "toJulianDay", value: function toJulianDay() { return this.toDays() + _classPrivateFieldGet(this, _calendar).epoch; } }, { key: "toObject", value: function toObject() { return { year: _classPrivateFieldGet(this, _year), month: this.month, day: _classPrivateFieldGet(this, _day), weekDay: this.weekDay, hour: _classPrivateFieldGet(this, _hour), minute: _classPrivateFieldGet(this, _minute), second: _classPrivateFieldGet(this, _second), millisecond: _classPrivateFieldGet(this, _millisecond), weekOfYear: this.weekOfYear, dayOfYear: this.dayOfYear, daysLeft: this.daysLeft, calendar: _classPrivateFieldGet(this, _calendar), locale: _classPrivateFieldGet(this, _locale), format: _classPrivateFieldGet(this, _format) || "YYYY/MM/DD", ignoreList: _classPrivateFieldGet(this, _ignoreList) }; } }, { key: "toJSON", value: function toJSON() { return this.valueOf(); } }, { key: "valueOf", value: function valueOf() { return this.toDate().valueOf(); } }, { key: "toDays", value: function toDays() { if (!this.isValid) return; return _classPrivateFieldGet(this, _calendar).getAllDays(this); } /** * @deprecated */ }, { key: "dayOfBeginning", get: function get() { return this.toDays(); } }, { key: "dayOfYear", get: function get() { if (!this.isValid) return; return _classPrivateFieldGet(this, _calendar).getDayOfYear(this); } }, { key: "weekOfYear", get: function get() { if (!this.isValid) return; return ~~(this.dayOfYear / 7) + 1; } }, { key: "daysLeft", get: function get() { if (!this.isValid) return; var yearLength = _classPrivateFieldGet(this, _calendar).yearLength, days = this.isLeap ? yearLength + 1 : yearLength; return days - this.dayOfYear; } }, { key: "year", get: function get() { return _classPrivateFieldGet(this, _year); }, set: function set(value) { _classPrivateFieldSet(this, _year, toNumber(value)); _classPrivateFieldGet(this, _fix).call(this); } }, { key: "month", get: function get() { return this.months[_classPrivateFieldGet(this, _month)] || {}; }, set: function set(value) { var _ref6; value = (_ref6 = toNumber(value.valueOf()) - 1) !== null && _ref6 !== void 0 ? _ref6 : undefined; _classPrivateFieldSet(this, _month, value); if (notInRange(value, 0, 11)) _classPrivateFieldGet(this, _fix).call(this); } }, { key: "monthIndex", get: function get() { return _classPrivateFieldGet(this, _month); } }, { key: "day", get: function get() { return _classPrivateFieldGet(this, _day); }, set: function set(value) { value = toNumber(value); _classPrivateFieldSet(this, _day, value); if (notInRange(value, 1, 28)) _classPrivateFieldGet(this, _fix).call(this); } }, { key: "weekDay", get: function get() { if (!this.isValid) return {}; var index = (this.toJulianDay() + 3) % 7; return _classPrivateFieldGet(this, _getWeekDays).call(this)[index]; } }, { key: "hour", get: function get() { return _classPrivateFieldGet(this, _hour); }, set: function set(value) { value = toNumber(value); _classPrivateFieldSet(this, _hour, value); if (notInRange(value, 0, 23)) _classPrivateFieldGet(this, _fix).call(this); } }, { key: "minute", get: function get() { return _classPrivateFieldGet(this, _minute); }, set: function set(value) { value = toNumber(value); _classPrivateFieldSet(this, _minute, value); if (notInRange(value, 0, 59)) _classPrivateFieldGet(this, _fix).call(this); } }, { key: "second", get: function get() { return _classPrivateFieldGet(this, _second); }, set: function set(value) { value = toNumber(value); _classPrivateFieldSet(this, _second, value); if (notInRange(value, 0, 59)) _classPrivateFieldGet(this, _fix).call(this); } }, { key: "millisecond", get: function get() { return _classPrivateFieldGet(this, _millisecond); }, set: function set(value) { value = toNumber(value); _classPrivateFieldSet(this, _millisecond, value); if (notInRange(value, 0, 999)) _classPrivateFieldGet(this, _fix).call(this); } }, { key: "months", get: function get() { var monthLengths = _classPrivateFieldGet(this, _calendar).getMonthLengths(this.isLeap); var months = (_classPrivateFieldGet(this, _custom).months || _classPrivateFieldGet(this, _locale).months).map(function (_ref7, index) { var _ref8 = _slicedToArray(_ref7, 2), name = _ref8[0], shortName = _ref8[1]; return { name: name, shortName: shortName, length: monthLengths[index], index: index, number: index + 1, toString: function toString() { return this.number.toString(); }, valueOf: function valueOf() { return this.number; } }; }); return months; }, set: function set(value) { if (!value) return delete _classPrivateFieldGet(this, _custom).months; var isValidValue = isArray(value) && value.length === 12 && value.every(function (array) { return isArray(array) && array.length === 2 && array.every(function (string) { return typeof string === "string"; }); }); if (!isValidValue) return; _classPrivateFieldGet(this, _custom).months = value; } }, { key: "weekDays", get: function get() { return _classPrivateFieldGet(this, _getWeekDays).call(this).sort(function (a, b) { return a.index - b.index; }); }, set: function set(value) { if (!value) return delete _classPrivateFieldGet(this, _custom).weekDays; var isValidValue = isArray(value) && value.length === 7 && value.every(function (array) { return isArray(array) && array.length === 2 && array.every(function (string) { return typeof string === "string"; }); }); if (!isValidValue) return; _classPrivateFieldGet(this, _custom).weekDays = value; } }, { key: "leaps", get: function get() { return _classPrivateFieldGet(this, _calendar).getLeaps(_classPrivateFieldGet(this, _year)); } }, { key: "calendar", get: function get() { return _classPrivateFieldGet(this, _calendar); }, set: function set(calendar) { this.convert(calendar); } }, { key: "locale", get: function get() { return _classPrivateFieldGet(this, _locale); }, set: function set() { var locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : en; if (isObject(locale)) _classPrivateFieldSet(this, _locale, locale); } }, { key: "custom", get: function get() { return _classPrivateFieldGet(this, _custom); } }, { key: "meridiems", get: function get() { return _classPrivateFieldGet(this, _locale).meridiems; } }, { key: "digits", get: function get() { return _classPrivateFieldGet(this, _custom).digits || _classPrivateFieldGet(this, _locale).digits; }, set: function set(value) { if (!value) return delete _classPrivateFieldGet(this, _custom).digits; var isValidValue = isArray(value) && value.length === 10; if (!isValidValue) return; _classPrivateFieldGet(this, _custom).digits = value; } }, { key: "_format", get: function get() { return _classPrivateFieldGet(this, _format); }, set: function set(format) { if (typeof format === "string") _classPrivateFieldSet(this, _format, format); } }, { key: "isLeap", get: function get() { return _classPrivateFieldGet(this, _calendar).isLeap(_classPrivateFieldGet(this, _year)); } }, { key: "isValid", get: function get() { return !isNaN(_classPrivateFieldGet(this, _year)) && !isNaN(_classPrivateFieldGet(this, _month)) && !isNaN(_classPrivateFieldGet(this, _day)); } }, { key: "isUTC", get: function get() { return _classPrivateFieldGet(this, _isUTC); } }, { key: "unix", get: function get() { return (this.valueOf() - this.millisecond) / 1000; } }, { key: "ignoreList", get: function get() { return _classPrivateFieldGet(this, _ignoreList); }, set: function set(ignoreList) { if (isArray(ignoreList)) _classPrivateFieldSet(this, _ignoreList, ignoreList); } }, { key: "weekStartDayIndex", get: function get() { return _classPrivateFieldGet(this, _calendar).weekStartDayIndex; }, set: function set(index) { index = toNumber(index); if (index === undefined) return; _classPrivateFieldGet(this, _calendar).weekStartDayIndex = Math.abs(index) % 7; } }, { key: "date", set: function set(date) { this.setDate(date); } }]); return DateObject; }(); var dateObject = DateObject; var index = /*@__PURE__*/getDefaultExportFromCjs(dateObject); module.exports = index;