🎯 Learning Objectives
By the end of this lesson, you will be able to:
- Create and manipulate Date objects
- Format dates for display
- Work with timestamps
- Calculate time differences
- Handle time zones
- Create date utilities
📚 Working with Dates
Creating Dates
// Current date and time
const now = new Date();
// Specific date
const specificDate = new Date('2023-12-25');
const dateWithTime = new Date('2023-12-25T10:30:00');
// Date from timestamp
const timestamp = 1703505000000;
const dateFromTimestamp = new Date(timestamp);
Date Methods
const date = new Date();
console.log(date.getFullYear()); // 2023
console.log(date.getMonth()); // 11 (0-based)
console.log(date.getDate()); // 25
console.log(date.getHours()); // 10
console.log(date.getMinutes()); // 30
console.log(date.getSeconds()); // 0
Formatting Dates
function formatDate(date) {
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit'
};
return date.toLocaleDateString('en-US', options);
}
// Usage
const formatted = formatDate(new Date());
console.log(formatted); // "December 25, 2023 at 10:30 AM"
🎯 Practice Exercises
Exercise 1: Date Calculator
Create a utility for date calculations:
Solution:
class DateCalculator {
static daysBetween(date1, date2) {
const timeDiff = Math.abs(date2.getTime() - date1.getTime());
return Math.ceil(timeDiff / (1000 * 3600 * 24));
}
static addDays(date, days) {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
static isWeekend(date) {
const day = date.getDay();
return day === 0 || day === 6; // Sunday or Saturday
}
static formatRelative(date) {
const now = new Date();
const diffInSeconds = Math.floor((now - date) / 1000);
if (diffInSeconds < 60) return 'Just now';
if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / 60)} minutes ago`;
if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / 3600)} hours ago`;
if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / 86400)} days ago`;
return date.toLocaleDateString();
}
}
// Usage
const today = new Date();
const tomorrow = DateCalculator.addDays(today, 1);
console.log('Days between:', DateCalculator.daysBetween(today, tomorrow));
console.log('Is weekend:', DateCalculator.isWeekend(today));
console.log('Relative time:', DateCalculator.formatRelative(today));
🎯 Key Takeaways
- Date objects represent specific moments in time
- Date methods access different parts of dates
- toLocaleDateString formats dates for display
- Timestamps are milliseconds since epoch
- Date calculations enable time-based features
Next Lesson: Lesson 8: Regular Expressions