JavaScript Date Set Methods

Learn how to modify date and time values

✏️ What are Date Set Methods?

Date Set methods allow you to modify specific parts of a date object like year, month, day, hours, minutes, and seconds.


// Create a date and modify it
let date = new Date("2024-03-15");
date.setFullYear(2025);
console.log(date); // 2025-03-15
                                    

Common Set Methods

📅

Date Parts

Set year, month, and day

let date = new Date();
date.setFullYear(2025);
date.setMonth(11);    // December (0-based)
date.setDate(25);     // Christmas!

Time Parts

Set hours, minutes, seconds

let date = new Date();
date.setHours(14);
date.setMinutes(30);
date.setSeconds(0);

Milliseconds

Set precise time values

let date = new Date();
date.setTime(1640995200000); // Set to specific timestamp
date.setMilliseconds(500);   // Set milliseconds
🌍

UTC Methods

Set UTC time values

let date = new Date();
date.setUTCHours(12);
date.setUTCMinutes(0);
date.setUTCSeconds(0);

🔹 Basic Set Methods

Here are the most commonly used set methods:

let date = new Date("2024-01-01 00:00:00");
console.log("Original:", date.toString());

// Set date components
date.setFullYear(2025);
date.setMonth(2);        // March (0-based)
date.setDate(15);

// Set time components
date.setHours(14);
date.setMinutes(30);
date.setSeconds(45);
date.setMilliseconds(500);

console.log("Modified:", date.toString());

Output:

Original: Mon Jan 01 2024 00:00:00 GMT-0500 (EST)
Modified: Sat Mar 15 2025 14:30:45 GMT-0500 (EST)

🔹 Setting Multiple Values at Once

Some set methods can accept multiple parameters:

let date = new Date();

// setFullYear(year, month, day)
date.setFullYear(2024, 11, 25); // December 25, 2024

// setHours(hours, minutes, seconds, milliseconds)
date.setHours(9, 30, 0, 0); // 9:30:00.000 AM

// setMonth(month, day)
date.setMonth(0, 1); // January 1st

console.log("New Year:", date.toString());

Output:

New Year: Wed Jan 01 2025 09:30:00 GMT-0500 (EST)

🔹 Date Arithmetic with Set Methods

Use set methods to add or subtract time periods:

let date = new Date("2024-03-15");

// Add 30 days
date.setDate(date.getDate() + 30);
console.log("30 days later:", date.toDateString());

// Add 3 months
date.setMonth(date.getMonth() + 3);
console.log("3 months later:", date.toDateString());

// Add 1 year
date.setFullYear(date.getFullYear() + 1);
console.log("1 year later:", date.toDateString());

// Subtract 2 hours
date.setHours(date.getHours() - 2);
console.log("2 hours earlier:", date.toString());

Output:

30 days later: Sun Apr 14 2024
3 months later: Tue Jul 14 2024
1 year later: Mon Jul 14 2025
2 hours earlier: Mon Jul 14 2025 22:00:00 GMT-0500 (EST)

🔹 UTC Set Methods

Set UTC (Universal Time) values instead of local time:

let date = new Date();

// Set local time
date.setHours(12, 0, 0, 0);
console.log("Local time:", date.toString());

// Set UTC time
date.setUTCHours(12, 0, 0, 0);
console.log("UTC time:", date.toString());

// All UTC set methods
date.setUTCFullYear(2024);
date.setUTCMonth(11);      // December
date.setUTCDate(25);       // Christmas
date.setUTCHours(0);       // Midnight UTC
date.setUTCMinutes(0);
date.setUTCSeconds(0);

console.log("Christmas UTC:", date.toString());

Output:

Local time: Fri Mar 15 2024 12:00:00 GMT-0500 (EST)
UTC time: Fri Mar 15 2024 07:00:00 GMT-0500 (EST)
Christmas UTC: Tue Dec 24 2024 19:00:00 GMT-0500 (EST)

🔹 Practical Examples

Real-world examples using set methods:

// Set to beginning of day
function setToStartOfDay(date) {
    date.setHours(0, 0, 0, 0);
    return date;
}

let today = new Date();
console.log("Start of day:", setToStartOfDay(new Date(today)));

// Set to end of day
function setToEndOfDay(date) {
    date.setHours(23, 59, 59, 999);
    return date;
}

console.log("End of day:", setToEndOfDay(new Date(today)));

// Set to first day of month
function setToFirstDayOfMonth(date) {
    date.setDate(1);
    return date;
}

console.log("First of month:", setToFirstDayOfMonth(new Date(today)));

// Set to last day of month
function setToLastDayOfMonth(date) {
    date.setMonth(date.getMonth() + 1, 0); // Day 0 = last day of previous month
    return date;
}

console.log("Last of month:", setToLastDayOfMonth(new Date(today)));

// Create a specific date and time
function createDateTime(year, month, day, hour, minute) {
    let date = new Date();
    date.setFullYear(year);
    date.setMonth(month - 1); // Convert to 0-based
    date.setDate(day);
    date.setHours(hour, minute, 0, 0);
    return date;
}

let meeting = createDateTime(2024, 12, 25, 14, 30);
console.log("Meeting time:", meeting.toString());

Output:

Start of day: Fri Mar 15 2024 00:00:00 GMT-0500 (EST)
End of day: Fri Mar 15 2024 23:59:59 GMT-0500 (EST)
First of month: Fri Mar 01 2024 14:30:25 GMT-0500 (EST)
Last of month: Sun Mar 31 2024 14:30:25 GMT-0500 (EST)
Meeting time: Wed Dec 25 2024 14:30:00 GMT-0500 (EST)

🔹 Important Notes

Remember:

  • Months are 0-based: January = 0, December = 11
  • Set methods modify the original date object
  • Invalid dates auto-correct: setDate(32) becomes next month's 1st or 2nd
  • Set methods return milliseconds since January 1, 1970 UTC
  • Use UTC methods when working with different timezones

🧠 Test Your Knowledge

What happens when you use setDate(32) on a date in March?