code: function timeZoneGetter(width) {
      return function (date, locale, offset) {
          var zone = -1 * offset;
          var minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);
          var hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);
          switch (width) {
              case ZoneWidth.Short:
                  return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +
                      padNumber(Math.abs(zone % 60), 2, minusSign);
              case ZoneWidth.ShortGMT:
                  return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);
              case ZoneWidth.Long:
                  return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +
                      padNumber(Math.abs(zone % 60), 2, minusSign);
              case ZoneWidth.Extended:
                  if (offset === 0) {
                      return 'Z';
                  }
                  else {
                      return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +
                          padNumber(Math.abs(zone % 60), 2, minusSign);
                  }
              default:
                  throw new Error("Unknown zone width \"" + width + "\"");
          }
      };
  }
docs: Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or
  GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,
  extended = +04:30)