1. ZonedDateTimeवर्ग

Date Time API मध्ये आणखी एक अतिशय मनोरंजक वर्ग आहे: ZonedDateTimeवर्ग. वेगवेगळ्या टाइम झोनमध्ये तारखांसह काम करणे सोयीस्कर बनवणे हा त्याचा मुख्य उद्देश आहे.

LocalDateतारखांचे प्रतिनिधित्व करण्यासाठी उत्तम आहे. उदाहरणार्थ, वाढदिवस. माझा वाढदिवस 15 मार्च आहे मी कुठेही असलो तरी. हे तारखेचे उदाहरण आहे.

LocalTimeवेळेचे वर्णन करणे चांगले आहे, जसे की अलार्म घड्याळावर सेट केलेली वेळ: मी सकाळी 5:00 वाजता अलार्म सेट केला आहे आणि मी कुठे आहे हे महत्त्वाचे नाही. 5:00 am आहे 5:00 am. वेळेनुसार काम करण्याचे हे उदाहरण आहे.

आता आपण असे म्हणूया की आम्ही एक ऍप्लिकेशन लिहित आहोत जो फ्लाइट बुक करतो. स्थानिक वेळेनुसार विमाने टेक ऑफ करतात आणि पोहोचतात. विमान ठराविक वेळेसाठी हवेत असते, परंतु टाइम झोन बदलू शकतात.

वेळ क्षेत्र

तसे, टाइम झोन एक वास्तविक गोंधळ आहे. आणि जर तुम्हाला असे वाटत असेल की 24 टाइम झोन आहेत, तर तुम्ही खूप चुकीचे आहात.

उदाहरणार्थ, भारतातील वेळ ग्रीनविच मीन टाइमपेक्षा साडेपाच तासांनी भिन्न आहे: GMT+5:30. काही देश डेलाइट सेव्हिंग टाइमवर स्विच करतात, आणि इतर तसे करत नाहीत. इतकेच काय, भिन्न देश वर्षाच्या वेगवेगळ्या वेळी उन्हाळ्याच्या वेळेवर स्विच करतात.

आणि काही देश कायदे करतात जे डेलाइट सेव्हिंग टाइम रद्द करतात, किंवा ते पुन्हा सादर करतात किंवा ते पुन्हा रद्द करतात.

कोणत्याही परिस्थितीत, जगामध्ये टाइम झोन असतात आणि प्रत्येक टाइम झोनमध्ये एक वेळ असतो. वेगवेगळ्या झोनमधील वेळ वर्षाच्या काही विशिष्ट कालावधीत एकसमान असू शकते आणि नंतर इतर कालावधीत भिन्न असू शकते. टाइम झोन सहसा त्यांच्यामध्ये असलेल्या प्रमुख शहरांच्या नावावर ठेवले जातात: Europe/Monaco, Asia/Singapore, परंतु अपवाद देखील आहेत — US/Pacific.

अधिकृतपणे, याक्षणी 599 टाइम झोन आहेत. याचा विचार करा: 599. ते 24 पासून खूप दूर आहे. जागतिक जगात आपले स्वागत आहे.

ZoneIdपॅकेजमधील क्लास Java java.timeमध्ये टाइम झोन साठवण्यासाठी वापरला जातो.

तसे, यात एक स्थिर getAvailableZoneIds()पद्धत आहे, जी सध्या ज्ञात असलेल्या सर्व वेळ क्षेत्रांचा संच परत करते. सर्व झोनची यादी मिळविण्यासाठी, तुम्हाला खालील कोड लिहावा लागेल:

कोड कन्सोल आउटपुट (आंशिक)
for (String s: ZoneId.getAvailableZoneIds())
   System.out.println(s);
Asia/Aden
America/Cuiaba
Etc/GMT+9
Etc/GMT+8

ZoneIdऑब्जेक्ट त्याच्या नावाने मिळविण्यासाठी , आपल्याला स्थिर of()पद्धत वापरण्याची आवश्यकता आहे;

कोड नोंद
ZoneId zone = ZoneId.of("Africa/Cairo");
Cairo


2. ZonedDateTimeऑब्जेक्ट तयार करणे

ऑब्जेक्ट तयार करताना ZonedDateTime, तुम्हाला क्लासच्या स्टॅटिक now()पद्धतीला कॉल करणे आणि ZoneIdत्यावर ऑब्जेक्ट पास करणे आवश्यक आहे.

कोड कन्सोल आउटपुट
ZoneId zone = ZoneId.of("Africa/Cairo");
ZonedDateTime time = ZonedDateTime.now(zone);
System.out.println(time);


2019-02-22T11:37:58.074816+02:00[Africa/Cairo]

ZoneIdजर तुम्ही या पद्धतीमध्ये एखादी वस्तू पास केली नाही now()(आणि त्यास परवानगी आहे), तर प्रोग्राम चालवत असलेल्या संगणकाच्या सेटिंग्जवर आधारित टाइम झोन स्वयंचलितपणे निर्धारित केला जातो.

उदाहरण:

कोड कन्सोल आउटपुट
ZonedDateTime time = ZonedDateTime.now();
System.out.println(time);

2019-02-22T13:39:05.70842+02:00[Europe/Helsinki]

जागतिक तारखेला स्थानिक तारखेमध्ये रूपांतरित करणे

च्या मनोरंजक वैशिष्ट्यांपैकी एक 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वर्गामध्ये तारीख आणि वेळेचे वैयक्तिक घटक मिळविण्याचे बरेच मार्ग आहेत. या पद्धतींची यादी येथे आहे:

int getYear()
विशिष्ट तारखेचे वर्ष मिळवते
Month getMonth()
तारखेचा महिना परत करतो: अनेक स्थिरांकांपैकी एक —JANUARY, FEBRUARY, ...;
int getMonthValue()
तारखेच्या महिन्याची अनुक्रमणिका मिळवते. जानेवारी == १
int getDayOfMonth()
महिन्याच्या दिवसाची अनुक्रमणिका मिळवते
DayOfWeek getDayOfWeek()
आठवड्याचा दिवस परत करतो: अनेक स्थिरांकांपैकी एक —MONDAY, TUESDAY, ...;
int getDayOfYear()
वर्षाच्या दिवसाची अनुक्रमणिका मिळवते
int getHour()
तास परत करतो
int getMinute()
मिनिटे परत करते
int getSecond()
सेकंद परत करते
int getNano()
नॅनोसेकंद परत करते

सर्व पद्धती वर्गाच्या पद्धतींशी पूर्णपणे एकरूप आहेत LocalDateTime. आणि, अर्थातच, ZonedDateTimeवर्गात अशा पद्धती आहेत ज्या तुम्हाला तारखा आणि वेळेसह कार्य करू देतात. ते म्हणाले, ज्या वस्तूवर पद्धती म्हणतात ती बदलत नाही. त्याऐवजी, ते एक नवीन ZonedDateTimeऑब्जेक्ट परत करतात:

पद्धती वर्णन
plusYears(int)
तारखेला वर्षे जोडते
plusMonths(int)
तारखेला महिने जोडतो
plusDays(int)
तारखेला दिवस जोडतो
plusHours(int)
तास जोडतो
plusMinutes(int)
मिनिटे जोडते
plusSeconds(int)
सेकंद जोडते
plusNanos(int)
नॅनोसेकंद जोडते
minusYears(int)
तारखेपासून वर्षे वजा करते
minusMonths(int)
तारखेपासून महिने वजा करते
minusDays(int)
तारखेपासून दिवस वजा करते
minusHours(int)
तास वजा करतो
minusMinutes(int)
मिनिटे वजा करतो
minusSeconds(int)
सेकंद वजा करतो
minusNanos(int)
नॅनोसेकंद वजा करते

आम्ही कोणतीही उदाहरणे देणार नाही, कारण आम्हाला वाटते की आम्ही नुकत्याच विचारात घेतलेल्या वर्गांच्या समानतेने येथे सर्व काही स्पष्ट आहे.