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();
    }
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;

        
        this._input = duration;

        
        this._milliseconds = milliseconds +
            seconds * 1e3 + 
            minutes * 6e4 + 
            hours * 36e5; 
        
        
        this._days = days +
            weeks * 7;
        
        
        
        this._months = months +
            years * 12;

        this._data = {};

        this._bubble();
    }
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 ( ) ; }
Duration Constructor
Duration Constructor