Back to Home
Dates

How to Add/Subtract Time from Dates

Use setters or create new Date with modified timestamp

Quick Answer (2024 ES6+ Way)

javascript
const now = new Date();
const tomorrow = new Date(now);
tomorrow.setDate(tomorrow.getDate() + 1);
console.log(tomorrow);

Live Example

javascript
const now = new Date();

// Add days
const addDays = (date, days) => {
  const result = new Date(date);
  result.setDate(result.getDate() + days);
  return result;
};
console.log(addDays(now, 7));

// Add months
const addMonths = (date, months) => {
  const result = new Date(date);
  result.setMonth(result.getMonth() + months);
  return result;
};

// Subtract time
const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);

// Start/end of day
const startOfDay = new Date(now);
startOfDay.setHours(0, 0, 0, 0);

const endOfDay = new Date(now);
endOfDay.setHours(23, 59, 59, 999);

Common Variations

Add Hours/Minutes
javascript
const addHours = (date, hours) =>
  new Date(date.getTime() + hours * 60 * 60 * 1000);
  
const addMinutes = (date, mins) =>
  new Date(date.getTime() + mins * 60 * 1000);
Business Days
javascript
function addBusinessDays(date, days) {
  const result = new Date(date);
  let added = 0;
  while (added < days) {
    result.setDate(result.getDate() + 1);
    if (result.getDay() !== 0 && result.getDay() !== 6) {
      added++;
    }
  }
  return result;
}

❌ Don't Do This (Outdated Way)

Avoid direct timestamp math without considering edge cases

javascript
// DON'T DO THIS - doesn't handle month boundaries
date.setDate(date.getDate() + 365); // Wrong for leap years

Browser Support

Works in all modern browsers (ES5+)

#dates#add#subtract