Use setters or create new Date with modified timestamp
const now = new Date();
const tomorrow = new Date(now);
tomorrow.setDate(tomorrow.getDate() + 1);
console.log(tomorrow);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);const addHours = (date, hours) =>
new Date(date.getTime() + hours * 60 * 60 * 1000);
const addMinutes = (date, mins) =>
new Date(date.getTime() + mins * 60 * 1000);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;
}Avoid direct timestamp math without considering edge cases
// DON'T DO THIS - doesn't handle month boundaries
date.setDate(date.getDate() + 365); // Wrong for leap years✓ Works in all modern browsers (ES5+)