The JavaScript Date object stores a single point in time as milliseconds elapsed since January 1, 1970, 00:00:00 UTC (the Unix Epoch). Calling new Date() with no arguments captures the current system date and time.
Date Instances SafelyYou can construct a Date in four main ways depending on your data source:
new Date(): Returns the current date and time.new Date(isoString): Parses an ISO 8601 string like "2026-11-12T10:30:00Z".new Date(year, monthIndex, day, ...): Uses local time, where months start at 0 (0 = January, 11 = December).Date.now(): Static helper that returns the current timestamp in milliseconds without allocating a Date object.Use Date.now() to measure durations or calculate future expiry timestamps cleanly.
const now = new Date();
const releaseDate = new Date(2026, 10, 12); // Month 10 = November!
const startMs = Date.now();
const sevenDaysMs = 7 * 24 * 60 * 60 * 1000;
const expiryDate = new Date(startMs + sevenDaysMs);
console.log("Current ISO:", now.toISOString());
console.log("Release local:", releaseDate.toDateString());
console.log("Expires in 7 days:", expiryDate.toISOString());
11 to new Date(2026, 11, 1) creates December 1, not November 1.Date() without new: Date() without new returns a plain string instead of a Date object, so .getFullYear() will throw a TypeError.Date objects with ===: new Date(0) === new Date(0) is false because they are separate object instances. Compare d1.getTime() === d2.getTime().Date.now() better than new Date().getTime() for timestamps?Date.now() returns the exact same millisecond integer directly without creating a temporary Date object in memory.
Use performance.now() instead of Date.now() for benchmarking, because performance.now() offers sub-millisecond precision and never jumps backward if system clocks sync.
Date objects mutable?Yes, calling setDate() or setHours() modifies the Date object in place, so copy it first with new Date(original.getTime()) before adjusting.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.