public DateTime add(DateTime dateTime) {
        int year  = this._year  + dateTime.getYear();
        int month = this._month + dateTime.getMonth();
        int day   = this._day   + dateTime.getDay();
        int h     = this._h     + dateTime.getHour();
        int m     = this._m     + dateTime.getMinute();
        int s     = this._s     + dateTime.getSeconds();
        int ms    = this._ms    + dateTime.getMilliSeconds();
        
        // fix overflows
        while(ms >= 1000) { ms -= 1000; s++; }
        while(s >= 60) { s -= 60; m++; }
        while(m >= 60) { m -= 60; h++; }
        while(h >= 24) { h -= 24; day++; }
        while(day >= 32) { day -= 32; month++; }
        while(month > 12) { month -= 12; year++; }
        
        // Return new DateTime with values
        return new DateTime(h, m, s, ms, day, month, year);
    }