इसे छोड़कर कंटेंट पर जाएं

तारीखों के साथ काम करना

JavaScript (TypeScript) में तारीखों के साथ काम करने के लिए Date ऑब्जेक्ट पहले से उपलब्ध है, और Office Scripts में भी इसे इसी तरह इस्तेमाल किया जा सकता है।

इस लेख में Office Scripts का उपयोग करके तारीखों के साथ काम करने के तरीकों को सैंपल कोड के साथ व्यवस्थित रूप से समझाया गया है।

तारीख प्राप्त करना

Section titled “तारीख प्राप्त करना”

new Date() से Date ऑब्जेक्ट बनाकर तारीख प्राप्त की जा सकती है।

अगर कोई आर्ग्युमेंट न दिया जाए, तो वर्तमान तारीख और समय को दर्शाने वाला Date ऑब्जेक्ट बनता है।

Date ऑब्जेक्ट डिफ़ाइन करना
/** साल, महीना और दिन बताकर बनाई गई तारीख */
const date = new Date(2024, 0, 1);
date.toLocaleDateString(); // 2024/1/1
/** वर्तमान तारीख */
const now = new Date();
now.toLocaleDateString(); // 2022/3/16 (वर्तमान तारीख)

ध्यान दें कि महीने की रेंज 1 से 12 नहीं, बल्कि 0 से 11 होती है (0 का मतलब जनवरी और 11 का मतलब दिसंबर)।

साथ ही, toLocaleDateString का आउटपुट फ़ॉर्मेट रनटाइम एनवायरनमेंट के लोकेल (भाषा और क्षेत्र की सेटिंग) के अनुसार अलग होता है। सैंपल की कमेंट में दिखाए गए नतीजे जापानी लोकेल वाले एनवायरनमेंट के उदाहरण हैं।

तारीख में जोड़ना और घटाना

Section titled “तारीख में जोड़ना और घटाना”

Date ऑब्जेक्ट में साल, महीना, दिन, घंटा, मिनट और सेकंड, हर एक को सेट करने के लिए मेथड उपलब्ध हैं।

तारीख में जोड़ना और घटाना
/** वर्तमान तारीख */
const now = new Date();
// साल बदलना
now.setFullYear(now.getFullYear() + 1);
// महीना बदलना
now.setMonth(now.getMonth() + 1);
// दिन बदलना
now.setDate(now.getDate() - 1);
// घंटा बदलना
now.setHours(now.getHours() + 1);
// मिनट बदलना
now.setMinutes(now.getMinutes() - 1);
// सेकंड बदलना
now.setSeconds(now.getSeconds() - 1);

अगर इस दौरान कोई वैल्यू अपनी सीमा से आगे निकल जाए, तो वह अपने-आप अगली बड़ी इकाई में आगे बढ़ा दी जाती है।

उदाहरण के लिए, अगर गणना के बाद घंटा 30 हो जाए, तो उसे अपने-आप अगले दिन के 6 बजे के रूप में माना जाता है।

दो Date ऑब्जेक्ट के बीच का अंतर निकालना

Section titled “दो Date ऑब्जेक्ट के बीच का अंतर निकालना”

Date.getTime मेथड का उपयोग करके 1 जनवरी 1970, 00:00:00 (UTC) से बीते हुए मिलीसेकंड प्राप्त किए जा सकते हैं।

आम तौर पर इसी का उपयोग करके, मिलीसेकंड से तारीखों के बीच का अंतर निकाला जाता है।

तारीखों के बीच का अंतर निकालना
/** वर्तमान तारीख */
const now = new Date();
/** नए साल का पहला दिन */
const gantan = new Date(now.getFullYear(), 0, 1);
/** तारीखों के बीच का अंतर (मिलीसेकंड) */
const difference = now.getTime() - gantan.getTime();
/** तारीखों के बीच का अंतर (दिन) */
const differenceDays = Math.floor(difference / 1000 / 60 / 60 / 24);
console.log(`नए साल के पहले दिन से ${differenceDays} दिन बीत चुके हैं`);

Date ऑब्जेक्ट के बारे में अतिरिक्त जानकारी

Section titled “Date ऑब्जेक्ट के बारे में अतिरिक्त जानकारी”

Date ऑब्जेक्ट एक म्यूटेबल (बदला जा सकने वाला) ऑब्जेक्ट है।

मान लीजिए, आपने किसी फ़ंक्शन को Date ऑब्जेक्ट आर्ग्युमेंट के रूप में पास किया।

ऐसे में, फ़ंक्शन की प्रोसेसिंग पूरी होने के बाद इस बात की कोई गारंटी नहीं है कि पास किया गया Date ऑब्जेक्ट वैसा ही रहेगा, जैसा पास करने से पहले था।

Date ऑब्जेक्ट की म्यूटेबिलिटी
function main(workbook: ExcelScript.Workbook) {
const now = new Date();
console.log(now.toLocaleDateString()); // 2022/3/16
changeMonth(now);
console.log(now.toLocaleDateString()); // 2022/1/16
}
function changeMonth(date: Date) {
date.setMonth(0);
}

ऊपर दिए गए कोड में आप देख सकते हैं कि changeMonth फ़ंक्शन चलने से पहले और बाद में वेरिएबल now की वैल्यू बदल गई है।

यह कोड सरल है, इसलिए तुरंत पता चल जाता है कि now कहाँ बदला गया, लेकिन जैसे-जैसे पूरा प्रोग्राम बड़ा होता जाता है, यह पता लगाना मुश्किल होता जाता है।

Date ऑब्जेक्ट को किसी दूसरे फ़ंक्शन में पास करते समय इस बात का ध्यान रखें कि उसमें कोई बदलाव तो नहीं किया गया। अगर आप नहीं चाहते कि मूल वैल्यू बदले, तो new Date(now.getTime()) की तरह उसकी कॉपी बनाकर पास करना सुरक्षित है।