Date Arithmetic

Add and subtract time from dates

JavaScriptBeginner
JavaScript
// Method 1: Add/subtract days
function addDays(date, days) {
    const result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}

function subtractDays(date, days) {
    return addDays(date, -days);
}

const today = new Date();
console.log('Today:', today);
console.log('Tomorrow:', addDays(today, 1));
console.log('Yesterday:', subtractDays(today, 1));

// Method 2: Add/subtract months
function addMonths(date, months) {
    const result = new Date(date);
    result.setMonth(result.getMonth() + months);
    return result;
}

console.log('Next month:', addMonths(today, 1));
console.log('Last month:', addMonths(today, -1));

// Method 3: Add/subtract years
function addYears(date, years) {
    const result = new Date(date);
    result.setFullYear(result.getFullYear() + years);
    return result;
}

console.log('Next year:', addYears(today, 1));

// Method 4: Add/subtract hours
function addHours(date, hours) {
    const result = new Date(date);
    result.setHours(result.getHours() + hours);
    return result;
}

console.log('In 2 hours:', addHours(today, 2));

// Method 5: Add/subtract minutes
function addMinutes(date, minutes) {
    const result = new Date(date);
    result.setMinutes(result.getMinutes() + minutes);
    return result;
}

console.log('In 30 minutes:', addMinutes(today, 30));

// Method 6: Using timestamps
function addTime(date, milliseconds) {
    return new Date(date.getTime() + milliseconds);
}

console.log('Add 1 day (ms):', addTime(today, 24 * 60 * 60 * 1000));
console.log('Add 1 hour (ms):', addTime(today, 60 * 60 * 1000));

// Method 7: Date difference
function dateDifference(date1, date2) {
    const diff = Math.abs(date1 - date2);
    const days = Math.floor(diff / (1000 * 60 * 60 * 24));
    const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
    return { days, hours, minutes };
}

const date1 = new Date('2024-01-01');
const date2 = new Date('2024-01-15');
console.log('Difference:', dateDifference(date1, date2));

Output

Today: 2024-01-15T10:30:45.123Z
Tomorrow: 2024-01-16T10:30:45.123Z
Yesterday: 2024-01-14T10:30:45.123Z
Next month: 2024-02-15T10:30:45.123Z
Last month: 2023-12-15T10:30:45.123Z
Next year: 2025-01-15T10:30:45.123Z
In 2 hours: 2024-01-15T12:30:45.123Z
In 30 minutes: 2024-01-15T11:00:45.123Z
Add 1 day (ms): 2024-01-16T10:30:45.123Z
Add 1 hour (ms): 2024-01-15T11:30:45.123Z
Difference: { days: 14, hours: 0, minutes: 0 }

Date arithmetic manipulates dates.

Methods

  • setDate/setMonth/setFullYear
  • setHours/setMinutes/setSeconds
  • Using timestamps

Adding Time

  • Days: setDate(getDate() + n)
  • Months: setMonth(getMonth() + n)
  • Years: setFullYear(getFullYear() + n)
  • Hours/Minutes: setHours/getMinutes

Subtracting

  • Use negative values
  • Or subtract from timestamp

Date Difference

  • Calculate milliseconds
  • Convert to days/hours/minutes
  • Handle timezones

Best Practices

  • Create new Date objects
  • Don't mutate original
  • Handle month/year boundaries
  • Use timestamps for precision