← Back to JavaScript Course | Chapter 5: ES6+ Features | Lesson 12 of 12

JS का Temporal API

classic JavaScript Date object कुछ-कुछ एक पुरानी alarm clock जैसा है जिसे कोई भी छूने वाला चुपचाप reset कर सकता है, और जिसकी month dial एक की जगह शून्य से गिनना शुरू करती है। Temporal तारीख और समय के tools का एक नया, ज़्यादा सावधानी से बना सेट है जिसे उन पुरानी परेशानियों को साफ, immutable values से ठीक करने के लिए शुरू से design किया गया है।
Syntax
javascript
const now = Temporal.Now.plainDateTimeISO();
const date = Temporal.PlainDate.from("YYYY-MM-DD");
date.add({ days: n });

Temporal क्यों मौजूद है

built-in Date object में कई जाने-पहचाने design flaws हैं: यह mutable है इसलिए कोई भी reference रखने वाला code इसे अनपेक्षित रूप से बदल सकता है, months zero-indexed हैं इसलिए January 0 है, और यह समय के किसी moment को उस moment के किसी timezone में दिखाए जाने के तरीके के साथ मिला देता है।

Temporal एक modern date-time API है जो इन समस्याओं को precise, immutable types के एक परिवार से ठीक करने के लिए design किया गया है।

उदाहरण: Why Temporal Exists

javascript
const d = new Date(2024, 0, 15); // month 0 = January
console.log(d.getMonth()); // 0, not 1
// Temporal fixes this with explicit, immutable types

Temporal.PlainDate

Temporal.PlainDate एक calendar date को represent करता है, जैसे कोई birthday, बिना किसी time-of-day या timezone जानकारी के जुड़े।

यह अलगाव मायने रखता है क्योंकि कई असली दुनिया की dates को सच में किसी खास moment की ज़रूरत नहीं होती, और उन पर एक थोपना, जैसा पुराना Date object करता है, timezone bugs को न्योता देता है।

उदाहरण: Temporal.PlainDate

javascript
const date = Temporal.PlainDate.from("2024-06-15");
console.log(date.toString()); // no time or timezone attached

Temporal.PlainTime और PlainDateTime

Temporal.PlainTime दिन के किसी समय को represent करता है, जैसे 2:30 PM, बिना किसी संबंधित date के, जबकि Temporal.PlainDateTime एक calendar date और दिन के समय दोनों को मिलाता है पर फिर भी बिना किसी timezone के।

इन बातों को अलग करना code को यह ठीक-ठीक बताने देता है कि वह किस तरह की value पर काम कर रहा है, हमेशा एक पूरे timezone-aware timestamp की ज़रूरत के बजाय।

उदाहरण: Temporal.PlainTime and PlainDateTime

javascript
// Declare the constant `time`, set to `Temporal.PlainTime.from("14:30")`
// Declare the constant `time`, set to `Temporal.PlainTime.from("14:30")`
const time = Temporal.PlainTime.from("14:30");
// Declare the constant `dateTime`, set to `Temporal.PlainDateTime.from("2024-06-15T14:30")`
// Declare the constant `dateTime`, set to `Temporal.PlainDateTime.from("2024-06-15T14:30")`
const dateTime = Temporal.PlainDateTime.from("2024-06-15T14:30");
// Print `time.toString(), dateTime.toString()` to the console
// Print `time.toString(), dateTime.toString()` to the console
console.log(time.toString(), dateTime.toString());

Temporal.Now

Temporal.Now current moment पाने के लिए कई methods देता है, जिनमें precise point in time के लिए instant() और ISO calendar में सिर्फ आज की calendar date के लिए plainDateISO() शामिल हैं।

now को इन खास forms में बांटना यह साफ बना देता है कि आपके code को असल में किस तरह की current-time value चाहिए।

उदाहरण: Temporal.Now

javascript
// Declare the constant `now`, set to `Temporal.Now.instant()`
// Declare the constant `now`, set to `Temporal.Now.instant()`
const now = Temporal.Now.instant();
// Declare the constant `today`, set to `Temporal.Now.plainDateISO()`
// Declare the constant `today`, set to `Temporal.Now.plainDateISO()`
const today = Temporal.Now.plainDateISO();
// Print `now.toString(), today.toString()` to the console
// Print `now.toString(), today.toString()` to the console
console.log(now.toString(), today.toString());

Temporal की Date से तुलना

हर Temporal type immutable है, इसलिए add() या subtract() जैसे operations original को बदलने के बजाय हमेशा एक नया object return करते हैं, जो legacy Date object को परेशान करने वाली aliasing bugs की एक पूरी category को खत्म कर देता है।

Temporal आपको ZonedDateTime जैसे types के ज़रिए timezones के बारे में explicit होने की भी मांग करता है, उस तरह चुपचाप local और UTC interpretations को मिलाने के बजाय जैसे Date करता है।

उदाहरण: Comparing Temporal to Date

javascript
const date = Temporal.PlainDate.from("2024-01-01");
const later = date.add({ days: 10 }); // returns a new object
console.log(date.toString(), later.toString()); // original unchanged
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. ऐसे browser या runtime में Temporal इस्तेमाल करना जो इसे अभी support नहीं करता, जो ReferenceError throw करता है; पहले support check करें।
  2. यह उम्मीद करना कि Date की तरह months 0 से शुरू होंगे, जबकि Temporal में months 1 से शुरू होते हैं।
  3. किसी Temporal object को mutate करना, जबकि वे immutable हैं और add() जैसे methods एक नया return करते हैं।
चैप्टर सारांश
  • Spread operator, rest parameters, और template literals values और text के साथ काम करना आसान बनाते हैं।
  • Optional chaining, nullish coalescing, short circuit evaluation, और logical assignment safer, छोटे conditions लिखते हैं।
  • globalThis, symbols, tagged templates, BigInt, और Temporal API नए features जोड़ते हैं।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.