Date Arithmetic in JavaScript
Add and subtract time from dates
BeginnerDate/Time ProgramsExample 3 of 10
date-arithmetic.js
1// Method 1: Add/subtract days2function addDays(date, days) {3 const result = new Date(date);4 result.setDate(result.getDate() + days);5 return result;6}78function subtractDays(date, days) {9 return addDays(date, -days);10}1112const today = new Date();13console.log('Today:', today);14console.log('Tomorrow:', addDays(today, 1));15console.log('Yesterday:', subtractDays(today, 1));1617// Method 2: Add/subtract months18function addMonths(date, months) {19 const result = new Date(date);20 result.setMonth(result.getMonth() + months);21 return result;22}2324console.log('Next month:', addMonths(today, 1));25console.log('Last month:', addMonths(today, -1));2627// Method 3: Add/subtract years28function addYears(date, years) {29 const result = new Date(date);30 result.setFullYear(result.getFullYear() + years);31 return result;32}3334console.log('Next year:', addYears(today, 1));3536// Method 4: Add/subtract hours37function addHours(date, hours) {38 const result = new Date(date);39 result.setHours(result.getHours() + hours);40 return result;41}4243console.log('In 2 hours:', addHours(today, 2));4445// Method 5: Add/subtract minutes46function addMinutes(date, minutes) {47 const result = new Date(date);48 result.setMinutes(result.getMinutes() + minutes);49 return result;50}5152console.log('In 30 minutes:', addMinutes(today, 30));5354// Method 6: Using timestamps55function addTime(date, milliseconds) {56 return new Date(date.getTime() + milliseconds);57}5859console.log('Add 1 day (ms):', addTime(today, 24 * 60 * 60 * 1000));60console.log('Add 1 hour (ms):', addTime(today, 60 * 60 * 1000));6162// Method 7: Date difference63function dateDifference(date1, date2) {64 const diff = Math.abs(date1 - date2);65 const days = Math.floor(diff / (1000 * 60 * 60 * 24));66 const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));67 const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));68 return { days, hours, minutes };69}7071const date1 = new Date('2024-01-01');72const date2 = new Date('2024-01-15');73console.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 }What's going on
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