The Date object in JavaScript is used to work with dates and times. It provides methods to create, manipulate, and format date and time values.
Creating Dates
You can create a Date object in multiple ways:
- Current Date and Time:
const now = new Date();
console.log(now); // Current date and time
- Specific Date:
const specificDate = new Date(2024, 10, 21); // Year, Month (0-based), Day
console.log(specificDate); // Thu Nov 21 2024
- From a String:
const fromString = new Date("2024-11-21T10:00:00");
console.log(fromString); // Thu Nov 21 2024 10:00:00 GMT
- From Timestamps (milliseconds since Unix epoch):
const fromTimestamp = new Date(1732231200000);
console.log(fromTimestamp); // Thu Nov 21 2024 10:00:00 GMT
Common Methods
Getting Date and Time
Method | Description | Example |
---|---|---|
getFullYear() |
Returns the year |
date.getFullYear() -> 2024
|
getMonth() |
Returns the month (0-11) |
date.getMonth() -> 10 (November) |
getDate() |
Returns the day of the month (1-31) |
date.getDate() -> 21
|
getDay() |
Returns the weekday (0-6, Sun=0) |
date.getDay() -> 4 (Thursday) |
getHours() |
Returns the hour (0-23) |
date.getHours() -> 10
|
getMinutes() |
Returns the minutes (0-59) |
date.getMinutes() -> 0
|
getSeconds() |
Returns the seconds (0-59) |
date.getSeconds() -> 0
|
getTime() |
Returns timestamp in milliseconds |
date.getTime() -> 1732231200000
|
Setting Date and Time
Method | Description | Example |
---|---|---|
setFullYear(year) |
Sets the year | date.setFullYear(2025) |
setMonth(month) |
Sets the month (0-11) |
date.setMonth(0) -> January |
setDate(day) |
Sets the day of the month |
date.setDate(1) -> First day of the month |
setHours(hour) |
Sets the hour (0-23) | date.setHours(12) |
setMinutes(minutes) |
Sets the minutes (0-59) | date.setMinutes(30) |
setSeconds(seconds) |
Sets the seconds (0-59) | date.setSeconds(45) |
Formatting Dates
Method | Description | Example |
---|---|---|
toDateString() |
Returns date as a human-readable string |
date.toDateString() -> "Thu Nov 21 2024"
|
toISOString() |
Returns date in ISO format |
date.toISOString() -> "2024-11-21T10:00:00.000Z"
|
toLocaleDateString() |
Returns date in localized format |
date.toLocaleDateString() -> "11/21/2024"
|
toLocaleTimeString() |
Returns time in localized format |
date.toLocaleTimeString() -> "10:00:00 AM"
|
Common Use Cases
- Calculate Days Between Two Dates:
const startDate = new Date("2024-11-01");
const endDate = new Date("2024-11-21");
const diffInTime = endDate - startDate; // Difference in milliseconds
const diffInDays = diffInTime / (1000 * 60 * 60 * 24); // Convert to days
console.log(diffInDays); // 20
- Countdown Timer:
const targetDate = new Date("2024-12-31T23:59:59");
setInterval(() => {
const now = new Date();
const timeLeft = targetDate - now; // Milliseconds left
const days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));
const hours = Math.floor((timeLeft / (1000 * 60 * 60)) % 24);
const minutes = Math.floor((timeLeft / (1000 * 60)) % 60);
const seconds = Math.floor((timeLeft / 1000) % 60);
console.log(`${days}d ${hours}h ${minutes}m ${seconds}s`);
}, 1000);
- Format Current Date:
const now = new Date();
const formatted = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
console.log(formatted); // "2024-11-21"
- Find the Day of the Week:
const date = new Date("2024-11-21");
const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
console.log(days[date.getDay()]); // "Thursday"
- Check Leap Year:
const isLeapYear = (year) => {
return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
};
console.log(isLeapYear(2024)); // true
- Add/Subtract Days:
const addDays = (date, days) => {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
console.log(addDays(new Date(), 10)); // Adds 10 days to the current date
Pro Tips
- Use
Date.now()
to get the current timestamp directly without creating aDate
object:
console.log(Date.now()); // Timestamp in milliseconds
Be mindful of time zones when working with dates across regions. Use libraries like Moment.js or Day.js for advanced handling.
To avoid month off-by-one errors, remember that months are 0-indexed (
0 = January
,11 = December
).
Top comments (0)