JS का Temporal API
In this page:
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
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
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
// 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
// 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
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
- ऐसे browser या runtime में Temporal इस्तेमाल करना जो इसे अभी support नहीं करता, जो
ReferenceErrorthrow करता है; पहले support check करें। - यह उम्मीद करना कि
Dateकी तरह months 0 से शुरू होंगे, जबकि Temporal में months 1 से शुरू होते हैं। - किसी 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 जोड़ते हैं।
Chapter Quiz — Complete all 12 topics to unlock
0/12 topics done
Complete these topics first: