docs: function (format, tz) {
        // Default format is the same as toISOString
        if (!format) format = 'yyyy-MM-dd HH:mm:ss';
        var result = format;
        var tzInfo = tz ? timezoneJS.timezone.getTzInfo(this.getTime(), tz) : this.getTimezoneInfo();
        var _this = this;
        // If timezone is specified, get a clone of the current Date object and modify it
        if (tz) {
          _this = this.clone();
          _this.setTimezone(tz);
        }
        var hours = _this.getHours();
        return result
        // fix the same characters in Month names
        .replace(/a+/g, function () { return 'k'; })
        // `y`: year
        .replace(/y+/g, function (token) { return _fixWidth(_this.getFullYear(), token.length); })
        // `d`: date
        .replace(/d+/g, function (token) { return _fixWidth(_this.getDate(), token.length); })
        // `m`: minute
        .replace(/m+/g, function (token) { return _fixWidth(_this.getMinutes(), token.length); })
        // `s`: second
        .replace(/s+/g, function (token) { return _fixWidth(_this.getSeconds(), token.length); })
        // `S`: millisecond
        .replace(/S+/g, function (token) { return _fixWidth(_this.getMilliseconds(), token.length); })
        // `M`: month. Note: `MM` will be the numeric representation (e.g February is 02) but `MMM` will be text representation (e.g February is Feb)
        .replace(/M+/g, function (token) {
          var _month = _this.getMonth(),
          _len = token.length;
          if (_len > 3) {
            return timezoneJS.Months[_month];
          } else if (_len > 2) {
            return timezoneJS.Months[_month].substring(0, _len);
          }
          return _fixWidth(_month + 1, _len);
        })
        // `k`: AM/PM
        .replace(/k+/g, function () {
          if (hours >= 12) {
            if (hours > 12) {
              hours -= 12;
            }
            return 'PM';
          }
          return 'AM';
        })
        // `H`: hour
        .replace(/H+/g, function (token) { return _fixWidth(hours, token.length); })
        // `E`: day
        .replace(/E+/g, function (token) { return DAYS[_this.getDay()].substring(0, token.length); })
        // `Z`: timezone abbreviation
        .replace(/Z+/gi, function () { return tzInfo.tzAbbr; });
      }