1. ZonedDateTime
वर्ग
डेट टाइम एपीआई में एक और बहुत ही दिलचस्प वर्ग है: ZonedDateTime
कक्षा। इसका मुख्य उद्देश्य अलग-अलग समय क्षेत्रों में तिथियों के साथ काम करना सुविधाजनक बनाना है।
LocalDate
तिथियों का प्रतिनिधित्व करने के लिए बहुत अच्छा है। उदाहरण के लिए, जन्मदिन। मेरा जन्मदिन 15 मार्च है चाहे मैं कहीं भी रहूं। यह एक तिथि का उदाहरण है।
LocalTime
समय का वर्णन करने के लिए बहुत अच्छा है, जैसे अलार्म घड़ी पर सेट समय: मैं सुबह 5:00 बजे के लिए अलार्म सेट करता हूं और इससे कोई फर्क नहीं पड़ता कि मैं कहां हूं। सुबह 5:00 सुबह 5:00 बजे है। यह समय के साथ काम करने का एक उदाहरण है।
अब मान लेते हैं कि हम एक ऐसा एप्लिकेशन लिख रहे हैं जो उड़ानें बुक करता है। विमान स्थानीय समय के आधार पर उड़ान भरते और पहुंचते हैं। विमान एक निश्चित समय के लिए हवा में रहता है, लेकिन समय क्षेत्र बदल सकते हैं।
समय क्षेत्र
वैसे, टाइम जोन एक वास्तविक गड़बड़ है। और अगर आपको लगता है कि 24 समय क्षेत्र हैं, तो आप बहुत गलत हैं।
उदाहरण के लिए, भारत में समय ग्रीनविच मीन टाइम से साढ़े पांच घंटे अलग है: GMT+5:30
. कुछ देश डेलाइट सेविंग टाइम पर स्विच करते हैं, और अन्य नहीं। क्या अधिक है, विभिन्न देश वर्ष के अलग-अलग समय पर गर्मी के समय में स्विच करते हैं।
और कुछ देश ऐसे कानून पारित करते हैं जो डेलाइट सेविंग टाइम को रद्द करते हैं, या इसे फिर से शुरू करते हैं, या इसे फिर से रद्द करते हैं।
किसी भी घटना में, दुनिया में समय क्षेत्र होते हैं, और प्रत्येक समय क्षेत्र के भीतर एक समय होता है। विभिन्न क्षेत्रों में समय वर्ष की कुछ निश्चित अवधियों के दौरान मेल खा सकता है, और फिर अन्य अवधियों के दौरान भिन्न हो सकता है। समय क्षेत्र आमतौर पर उनमें स्थित प्रमुख शहरों के नाम पर रखे जाते हैं: Europe/Monaco
, Asia/Singapore
लेकिन इसके अपवाद भी हैं — US/Pacific
।
आधिकारिक तौर पर, इस समय 599 समय क्षेत्र हैं। इसके बारे में सोचें: 599। यह 24 से बहुत दूर है। वैश्विक दुनिया में आपका स्वागत है।
ZoneId
पैकेज से क्लास का उपयोग java.time
जावा में टाइम ज़ोन स्टोर करने के लिए किया जाता है।
वैसे, इसकी एक स्थिर getAvailableZoneIds()
विधि है, जो वर्तमान में ज्ञात सभी समय क्षेत्रों का सेट लौटाती है। सभी क्षेत्रों की सूची प्राप्त करने के लिए, आपको निम्नलिखित कोड लिखने की आवश्यकता है:
कोड | कंसोल आउटपुट (आंशिक) |
---|---|
|
|
किसी वस्तु को उसके नाम से प्राप्त करने के लिए ZoneId
, आपको स्थैतिक of()
विधि का उपयोग करने की आवश्यकता है;
कोड | टिप्पणी |
---|---|
|
|
2. ZonedDateTime
वस्तु बनाना
ऑब्जेक्ट बनाते समय ZonedDateTime
, आपको क्लास के स्टैटिक now()
मेथड को कॉल करना होगा और ZoneId
ऑब्जेक्ट को पास करना होगा।
कोड | कंसोल आउटपुट |
---|---|
|
|
ZoneId
यदि आप किसी ऑब्जेक्ट को विधि में पास नहीं करते हैं now()
(और इसकी अनुमति है), तो प्रोग्राम चलाने वाले कंप्यूटर की सेटिंग्स के आधार पर समय क्षेत्र स्वचालित रूप से निर्धारित होता है।
उदाहरण:
कोड | कंसोल आउटपुट |
---|---|
|
|
एक वैश्विक तिथि को स्थानीय में परिवर्तित करना
की दिलचस्प विशेषताओं में से एक ZonedDateTime
इसकी स्थानीय तिथि और समय में बदलने की क्षमता है। उदाहरण:
ZoneId zone = ZoneId.of("Africa/Cairo");
ZonedDateTime cairoTime = ZonedDateTime.now(zone);
LocalDate localDate = cairoTime.toLocalDate();
LocalTime localTime = cairoTime.toLocalTime();
LocalDateTime localDateTime = cairoTime.toLocalDateTime();
3. समय के साथ काम करना
कक्षा की तरह LocalDateTime
, ZonedDateTime
दिनांक और समय के अलग-अलग तत्वों को प्राप्त करने के लिए कक्षा के पास बहुत सारे तरीके हैं। यहां इन विधियों की सूची दी गई है:
|
किसी खास तारीख का साल लौटाता है |
|
दिनांक का महीना लौटाता है: कई स्थिरांकों में से एक —JANUARY, FEBRUARY, ...; |
|
तारीख के महीने का इंडेक्स लौटाता है. जनवरी == 1 |
|
महीने के दिन का सूचकांक लौटाता है |
|
सप्ताह का दिन लौटाता है: कई स्थिरांकों में से एक —MONDAY, TUESDAY, ...; |
|
वर्ष के दिन का सूचकांक लौटाता है |
|
घंटे लौटाता है |
|
मिनट लौटाता है |
|
सेकेंड लौटाता है |
|
नैनोसेकंड लौटाता है |
सभी विधियां LocalDateTime
कक्षा के तरीकों के बिल्कुल अनुरूप हैं। और, ज़ाहिर है, ZonedDateTime
कक्षा में ऐसी विधियाँ हैं जो आपको दिनांक और समय के साथ काम करने देती हैं। उस ने कहा, जिस वस्तु पर विधियों को बुलाया जाता है वह नहीं बदलता है। इसके बजाय, वे एक नई ZonedDateTime
वस्तु लौटाते हैं:
तरीकों | विवरण |
---|---|
|
तिथि में वर्ष जोड़ता है |
|
तारीख में महीने जोड़ता है |
|
तिथि में दिन जोड़ता है |
|
घंटे जोड़ता है |
|
मिनट जोड़ता है |
|
सेकंड जोड़ता है |
|
नैनोसेकंड जोड़ता है |
|
तिथि से वर्ष घटाता है |
|
तारीख से महीने घटाता है |
|
दिनांक से दिन घटाता है |
|
घंटे घटाता है |
|
मिनट घटाता है |
|
सेकंड घटाता है |
|
नैनोसेकंड घटाता है |
हम कोई उदाहरण नहीं देंगे, क्योंकि हमें लगता है कि यहाँ सब कुछ उन वर्गों के अनुरूप स्पष्ट है जिन्हें हमने अभी माना है।
GO TO FULL VERSION