code: function Duration(duration) {
          var years = duration.years || duration.year || duration.y || 0,
              months = duration.months || duration.month || duration.M || 0,
              weeks = duration.weeks || duration.week || duration.w || 0,
              days = duration.days || duration.day || duration.d || 0,
              hours = duration.hours || duration.hour || duration.h || 0,
              minutes = duration.minutes || duration.minute || duration.m || 0,
              seconds = duration.seconds || duration.second || duration.s || 0,
              milliseconds = duration.milliseconds || duration.millisecond || duration.ms || 0;
  
          // store reference to input for deterministic cloning
          this._input = duration;
  
          // representation for dateAddRemove
          this._milliseconds = milliseconds +
              seconds * 1e3 + // 1000
              minutes * 6e4 + // 1000 * 60
              hours * 36e5; // 1000 * 60 * 60
          // Because of dateAddRemove treats 24 hours as different from a
          // day when working around DST, we need to store them separately
          this._days = days +
              weeks * 7;
          // It is impossible translate months into days without knowing
          // which months you are are talking about, so we have to store
          // it separately.
          this._months = months +
              years * 12;
  
          this._data = {};
  
          this._bubble();
      }
docs: Duration Constructor