docs: function toDate(value) {
      if (isDate(value)) {
          return value;
      }
      if (typeof value === 'number' && !isNaN(value)) {
          return new Date(value);
      }
      if (typeof value === 'string') {
          value = value.trim();
          var parsedNb = parseFloat(value);
          // any string that only contains numbers, like "1234" but not like "1234hello"
          if (!isNaN(value - parsedNb)) {
              return new Date(parsedNb);
          }
          if (/^(\d{4}-\d{1,2}-\d{1,2})$/.test(value)) {
              /* For ISO Strings without time the day, month and year must be extracted from the ISO String
              before Date creation to avoid time offset and errors in the new Date.
              If we only replace '-' with ',' in the ISO String ("2015,01,01"), and try to create a new
              date, some browsers (e.g. IE 9) will throw an invalid Date error.
              If we leave the '-' ("2015-01-01") and try to create a new Date("2015-01-01") the timeoffset
              is applied.
              Note: ISO months are 0 for January, 1 for February, ... */
              var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__read"])(value.split('-').map(function (val) { return +val; }), 3), y = _a[0], m = _a[1], d = _a[2];
              return new Date(y, m - 1, d);
          }
          var match = void 0;
          if (match = value.match(ISO8601_DATE_REGEX)) {
              return isoStringToDate(match);
          }
      }
      var date = new Date(value);
      if (!isDate(date)) {
          throw new Error("Unable to convert \"" + value + "\" into a date");
      }
      return date;
  }