Dates

Loading concept...

🕰️ Working with Dates in JavaScript

Your Time Machine for the Web


The Story of Time

Imagine you have a magical calendar that not only shows today’s date but can also travel forward and backward in time! That’s exactly what JavaScript’s Date object is – your personal time machine for building websites and apps.

Every time you see a clock on a website, a countdown timer for a sale, or when your birthday reminder pops up – there’s a Date object working behind the scenes!


🎯 What You’ll Master

graph TD A[Date Object] --> B[Creating Dates] A --> C[Reading Parts] A --> D[Changing Parts] A --> E[Formatting] A --> F[Timezones] B --> G[new Date] B --> H[Date.now] B --> I[Date.parse]

1️⃣ Date Object Creation

The Birth of a Date

Think of creating a Date like filling out a birth certificate – you can do it many ways!

Way 1: Right Now! (Current Moment)

const rightNow = new Date();
// Creates: Current date & time
// Example: 2024-01-15T10:30:00

What happens: JavaScript looks at your computer’s clock and captures that exact moment!

Way 2: From a Text (String)

const birthday = new Date("2024-06-15");
// Creates: June 15, 2024

const partyTime = new Date("2024-12-25T18:00:00");
// Creates: Christmas at 6 PM

Way 3: Using Numbers

const myDate = new Date(2024, 5, 15, 14, 30);
// Year, Month, Day, Hour, Minute
// Creates: June 15, 2024 at 2:30 PM

⚠️ Surprise Alert: Months start at 0, not 1!

  • January = 0
  • February = 1
  • June = 5
  • December = 11

Think of it like a building where the ground floor is 0!

Way 4: From Milliseconds

const fromMs = new Date(1705315800000);
// Creates date from milliseconds
// since January 1, 1970

2️⃣ Date.now() and Date.parse()

Date.now() – The Stopwatch

Think of Date.now() as a super-fast stopwatch that tells you exactly how many milliseconds have passed since January 1, 1970 (the “birthday” of computer time!).

const timestamp = Date.now();
// Returns: 1705315800000 (example)
// This is milliseconds since 1970!

// Perfect for measuring time:
const start = Date.now();
// ... do something ...
const end = Date.now();
const timeTaken = end - start;
console.log(`Took ${timeTaken}ms`);

Date.parse() – The Translator

Date.parse() reads a date written as text and converts it to milliseconds.

const ms = Date.parse("2024-06-15");
// Returns: 1718409600000

// Same as:
const date = new Date("2024-06-15");
const ms2 = date.getTime();

Think of it like this:

  • Date.now() = “What time is it RIGHT NOW in milliseconds?”
  • Date.parse() = “Convert this text into milliseconds”

3️⃣ Reading Date Components

Opening the Date Box

Once you have a date, you can peek inside and read any part!

const now = new Date();

// Get the pieces:
now.getFullYear();   // 2024
now.getMonth();      // 0-11 (remember 0=Jan!)
now.getDate();       // 1-31 (day of month)
now.getDay();        // 0-6 (0=Sunday)
now.getHours();      // 0-23
now.getMinutes();    // 0-59
now.getSeconds();    // 0-59
now.getMilliseconds(); // 0-999
now.getTime();       // milliseconds since 1970

Quick Reference Table

Method Returns Example
getFullYear() Year 2024
getMonth() Month (0-11) 5 (June)
getDate() Day of month 15
getDay() Day of week 3 (Wed)
getHours() Hour (0-23) 14
getMinutes() Minutes 30

Real Example: Display Today

const today = new Date();
const day = today.getDate();
const month = today.getMonth() + 1;
const year = today.getFullYear();

console.log(`${day}/${month}/${year}`);
// Output: 15/1/2024

4️⃣ Modifying Date Components

Changing Time Like a Time Traveler!

You can change any part of a date. It’s like having a time machine remote control!

const date = new Date();

// Set different parts:
date.setFullYear(2025);
date.setMonth(11);        // December
date.setDate(25);         // 25th
date.setHours(18);        // 6 PM
date.setMinutes(0);
date.setSeconds(0);

// Now date = Christmas 2025 at 6 PM!

The Magic of Auto-Adjustment

JavaScript is smart! If you set invalid values, it adjusts automatically:

const date = new Date(2024, 0, 1);
// January 1, 2024

date.setDate(32);
// Becomes February 1, 2024!

date.setMonth(13);
// Rolls over to next year!

Adding Days Example

const today = new Date();
const nextWeek = new Date(today);

nextWeek.setDate(today.getDate() + 7);
// Now nextWeek is 7 days later!

Adding Months Example

const now = new Date();
const threeMonthsLater = new Date(now);

threeMonthsLater.setMonth(now.getMonth() + 3);
// 3 months in the future!

5️⃣ Date Formatting Methods

Making Dates Look Pretty

JavaScript gives you built-in ways to show dates nicely:

const date = new Date();

// Different formats:
date.toString();
// "Mon Jan 15 2024 10:30:00 GMT+0000"

date.toDateString();
// "Mon Jan 15 2024"

date.toTimeString();
// "10:30:00 GMT+0000"

date.toISOString();
// "2024-01-15T10:30:00.000Z"

date.toLocaleDateString();
// "1/15/2024" (varies by location)

date.toLocaleTimeString();
// "10:30:00 AM" (varies by location)

Locale-Specific Formatting

const date = new Date();

// American style:
date.toLocaleDateString('en-US');
// "1/15/2024"

// British style:
date.toLocaleDateString('en-GB');
// "15/01/2024"

// German style:
date.toLocaleDateString('de-DE');
// "15.1.2024"

Custom Formatting with Options

const date = new Date();

const options = {
  weekday: 'long',
  year: 'numeric',
  month: 'long',
  day: 'numeric'
};

date.toLocaleDateString('en-US', options);
// "Monday, January 15, 2024"

6️⃣ Timezones in JavaScript

The World Clock Problem

Imagine you’re in New York calling a friend in Tokyo. When it’s 9 AM for you, it’s 11 PM for them! Timezones keep track of this.

UTC – The Universal Time

const date = new Date();

// Local time methods:
date.getHours();        // Your timezone

// UTC methods (Universal):
date.getUTCHours();     // UTC time
date.getUTCDate();
date.getUTCMonth();
date.getUTCFullYear();

Understanding Timezone Offset

const date = new Date();

const offset = date.getTimezoneOffset();
// Returns minutes difference from UTC

// If you're in EST (UTC-5):
// offset = 300 (5 hours × 60 minutes)

Setting UTC Values

const date = new Date();

date.setUTCHours(12);
date.setUTCDate(15);
date.setUTCMonth(5);
// Sets time in UTC timezone

Converting Between Timezones

const date = new Date();

// Show in different timezones:
date.toLocaleString('en-US', {
  timeZone: 'America/New_York'
});

date.toLocaleString('en-US', {
  timeZone: 'Asia/Tokyo'
});

date.toLocaleString('en-US', {
  timeZone: 'Europe/London'
});

🎯 Quick Tips Summary

graph TD A[Date Tips] --> B[Months start at 0] A --> C[Date.now for timestamps] A --> D[Use UTC for servers] A --> E[toLocaleString for display] B --> F[January = 0] B --> G[December = 11]

Remember These!

  1. Months are 0-indexed – Always add 1 when displaying
  2. Days of week – Sunday = 0, Saturday = 6
  3. Use UTC for storing dates on servers
  4. Use local for showing to users
  5. Date.now() is fastest for timestamps

🚀 You Did It!

You now have a complete time machine toolkit! You can:

  • ✅ Create dates any way you want
  • ✅ Read any part of a date
  • ✅ Change dates freely
  • ✅ Format them beautifully
  • ✅ Handle timezones like a pro

Time to build something amazing! ⏰

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.