← Back to JavaScript Course | Chapter 4: Modern JS, Async & DOM | Lesson 25 of 26

JS Date Set करना

किसी Date object के हिस्से पढ़ना बस आधी तस्वीर है -- setFullYear(), setMonth(), setDate(), और इनके जैसे methods आपको किसी मौजूदा Date को in place बदलने देते हैं, सिर्फ एक हिस्सा (जैसे year) बदलते हुए बाकी को छेड़े बिना, या यहाँ तक कि किसी date को दूसरे के relative calculate करते हुए।
Syntax
javascript
date.setFullYear(year);
date.setMonth(month);
date.setDate(day);
date.setHours(hours);

Year, Month, और Day सेट करना

setFullYear(year), setMonth(month), और setDate(day) हर एक किसी मौजूदा Date object के एक खास हिस्से को बदलता है -- setMonth() अपने getMonth() counterpart जैसा ही zero-indexed convention (January के लिए 0) इस्तेमाल करता है, एक ऐसी बारीकी जिसमें आसानी से चूक हो सकती है।

Note: setMonth() calls को zero-indexed convention के हिसाब से दोबारा जांचें -- setMonth(0) January सेट करता है, "month 0 जो मौजूद ही नहीं है" वाला नहीं।
Warning: month की असली length से आगे किसी value के साथ setDate() error देने के बजाय अगले month में roll over कर जाता है, जो चुपचाप एक अनपेक्षित date दे सकता है।

उदाहरण: Setting the Year, Month, and Day

javascript
const date = new Date(2024, 0, 1);
date.setFullYear(2025);
date.setMonth(5); // 0-indexed, 5 = June
date.setDate(15);
console.log(date.toDateString());

Time Components सेट करना

setHours(), setMinutes(), setSeconds(), और setMilliseconds() किसी Date के time-of-day हिस्से को बदलते हैं, ठीक वैसे ही जैसे year/month/day setters उसके calendar हिस्से को बदलते हैं -- यह वही calendar date रखते हुए सिर्फ time adjust करने के लिए उपयोगी है।

Note: किसी Date पर सिर्फ time-of-day adjust करने के लिए setHours() (और इसके जैसे methods) इस्तेमाल करें, बिना पूरे object को शुरू से फिर से बनाए।
Warning: setHours() minutes, seconds, और milliseconds के लिए एक साथ optional अतिरिक्त arguments स्वीकार करता है -- इसे सिर्फ एक argument के साथ कॉल करना बाकी time components को अनबदला छोड़ देता है, जो आपका इरादा हो भी सकता है और नहीं भी।

उदाहरण: Setting Time Components

javascript
// Declare the constant `date` as a new `Date` instance
// Declare the constant `date` as a new `Date` instance
const date = new Date();
// Call `date.setHours(10)`
// Call `date.setHours(10)`
date.setHours(10);
// Call `date.setMinutes(30)`
// Call `date.setMinutes(30)`
date.setMinutes(30);
// Call `date.setSeconds(0)`
// Call `date.setSeconds(0)`
date.setSeconds(0);
// Print `date.toTimeString()` to the console
// Print `date.toTimeString()` to the console
console.log(date.toTimeString());

Relative Dates Calculate करना

एक चालाक pattern एक ही unit के getter और setter को मिलाता है: date.setDate(date.getDate() + 7) current day पढ़कर और उसमें 7 जोड़कर 'आज से एक हफ्ता बाद' calculate करता है, और JavaScript के Date object को किसी भी month या year rollover को अपने आप संभालने देता है।

Note: इस get-then-set pattern को इस्तेमाल करके JavaScript के Date arithmetic को month/year boundaries अपने आप संभालने दें, खुद "क्या यह month का आखिरी दिन है" manually calculate करने के बजाय।
Warning: जब resulting day current month की length से आगे निकल जाए, तो setDate() अपने आप अगले month (या साल भी) में roll over हो जाता है -- यही इस pattern की पूरी बात है, कोई bug नहीं।

उदाहरण: Computing Relative Dates

javascript
const date = new Date(2024, 0, 28);
date.setDate(date.getDate() + 7); // one week from now, handles rollover
console.log(date.toDateString());

किसी Date को किसी Period की शुरुआत या अंत पर सेट करना

setters को मिलाना आपको किसी date को एक सार्थक boundary पर snap करने देता है -- month की शुरुआत पाने के लिए day को 1 सेट करना, या current month का आखिरी दिन पाने के लिए setMonth(date.getMonth() + 1, 0) इस्तेमाल करना, calendar या reporting features बनाते समय दोनों आम ज़रूरतें हैं।

Note: किसी month का आखिरी दिन ढूंढने के लिए setMonth(month + 1, 0) को एक भरोसेमंद pattern के तौर पर इस्तेमाल करें, क्योंकि अगले month का day 0 हमेशा current month का आखिरी दिन होता है।
Warning: "month में हमेशा 30 दिन होते हैं" जैसी कोई hardcoded मान्यता February और किसी भी 31-दिन वाले month के लिए टूट जाती है -- हमेशा एक तय अंदाज़े के बजाय Date-based calculation इस्तेमाल करें।

उदाहरण: Setting a Date to the Start or End of a Period

javascript
const date = new Date(2024, 5, 15);
date.setDate(1); // start of the month
console.log(date.toDateString());
const lastDay = new Date(2024, 5, 15);
lastDay.setMonth(lastDay.getMonth() + 1, 0); // last day of the month
console.log(lastDay.toDateString());

Set Methods एक Timestamp Return करते हैं, Date नहीं

हर set method अपनी return value के रूप में Date का नया numeric timestamp (1970 से milliseconds) return करता है, कोई नया Date object नहीं -- original Date instance ही है जो in place बदला गया, और आगे उसी instance का इस्तेमाल होना चाहिए, setter की return value का नहीं।

Note: किसी setter को कॉल करने के बाद original Date variable इस्तेमाल करते रहें, setter की numeric return value को ऐसे store या दोबारा इस्तेमाल करने की कोशिश करने के बजाय जैसे वह कोई Date हो।
Warning: किसी setter की return value (const newDate = date.setFullYear(2030)) को किसी variable में assign करना और फिर उसे Date object की तरह treat करना एक गलती है -- यह बस एक साधारण number है।

उदाहरण: Set Methods Return a Timestamp, Not a Date

javascript
const date = new Date(2024, 0, 1);
const result = date.setFullYear(2025); // returns a timestamp, not a Date
console.log(typeof result, result);
console.log(date.toDateString()); // use the original instance
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. setMonth() कॉल करते समय यह भूल जाना कि JavaScript months zero-indexed हैं (0 = January, 11 = December), लोगों के naturally सोचने वाले calendar month number से एक कम।
  2. यह मान लेना कि कोई set method एक नया Date object return करता है -- वे सभी existing Date को in place mutate करते हैं और सिर्फ एक timestamp number return करते हैं, कोई नया Date instance नहीं।
  3. target month की असली length से आगे एक day-of-month value set करना (जैसे सिर्फ 30 days वाले महीने पर setDate(31)), जो error raise करने के बजाय अगले महीने में roll over हो जाता है।
चैप्टर सारांश
  • setFullYear(), setMonth(), setDate(), setHours(), और ऐसे ही methods हर एक किसी existing Date object के एक हिस्से को in place modify करते हैं।
  • getMonth() की तरह, setMonth() zero-indexed months इस्तेमाल करता है -- January के लिए 0, December के लिए 11।
  • Set methods एक timestamp number return करते हैं, कोई नई Date नहीं -- वही Date object mutate होता है और सीधे इस्तेमाल होता रह सकता है।
ब्राउज़र सपोर्ट

सभी Date set methods को JavaScript के सबसे शुरुआती versions से हर browser में support मिला है।

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.