1. Dateकक्षा और यूनिक्स समय

जावा की शुरुआत से ही, समय और तिथियों के साथ काम करने के लिए भाषा का एक विशेष वर्ग रहा है - Date. समय के साथ, तिथियों के साथ काम करने के लिए कई और कक्षाएं दिखाई दीं, लेकिन प्रोग्रामर Dateआज भी कक्षा का उपयोग करना जारी रखते हैं।

ऐसा इसलिए है क्योंकि यह बहुत ही सरल और सुविधाजनक है। और एक प्रोग्रामर के रूप में, आप निश्चित रूप से किसी वास्तविक परियोजना में इसका सामना करेंगे। इसका उपयोग करना है या नहीं यह आपकी पसंद है, लेकिन आपको यह पता होना चाहिए। इसलिए अपने कीमती समय में से कुछ मिनट इसे दें।

Dateकक्षा को इतना अच्छा क्या बनाता है ? इसकी सादगी।

कक्षा 1 जनवरी, 1970 से बीत चुके मिलीसेकंड की संख्याDate के रूप में दिनांक और समय की जानकारी संग्रहीत करती है। यह बहुत अधिक मिलीसेकंड है, इसलिए उन्हें संग्रहीत करने के लिए प्रकार का उपयोग किया जाता है।long

दिलचस्प।

1970 से विशेष रूप से क्यों? यह तथाकथित यूनिक्स समय है : यूनिक्स ऑपरेटिंग सिस्टम, जो कि सभी आधुनिक ऑपरेटिंग सिस्टम का दादा है, समय को इस प्रकार रखता है।

लेकिन आप बहुत आसानी से पता लगा सकते हैं कि दो तारीखों के बीच कितना समय बीत चुका है: बस एक तारीख को दूसरी तारीख से घटाएं, और आपको तारीखों के बीच का अंतर मिलिसेकंड तक मिल जाएगा।

Dateयहाँ कक्षा के साथ काम करने के कुछ उपयोगी उदाहरण दिए गए हैं ।


2. वर्तमान तिथि प्राप्त करना

वर्तमान समय और दिनांक प्राप्त करने के लिए, बस एक Dateवस्तु बनाएँ। प्रत्येक नई वस्तु उस समय को संग्रहीत करती है जब इसे बनाया गया था। यह बहुत ही सरल दिखता है:

Date current = new Date();

इस आदेश को निष्पादित करने के बाद, currentचर बनाई गई वस्तु के संदर्भ को संग्रहीत करेगा Date, जो आंतरिक रूप से इसके निर्माण के समय को संग्रहीत करेगा - मिलीसेकंड की संख्या जो 1 जनवरी, 1970 से बीत चुकी है।

स्क्रीन पर वर्तमान तिथि प्रदर्शित करना

वर्तमान तिथि प्रदर्शित करने के लिए, बस: ए) एक नई वस्तु बनाएं , बी) विधि का Dateउपयोग करके इसे स्क्रीन पर प्रिंट करें ।System.out.println()

उदाहरण:

कोड कंसोल आउटपुट
Date current = new Date();
System.out.println(current);
Thu Feb 21 14:01:34 EET 2019

कंसोल आउटपुट का अर्थ यहां दिया गया है:

मूलपाठ व्याख्या
गुरुवार _ गुरुवार
फरवरी 21 21 फरवरी
14:01:34 घंटे : मिनट : सेकंड
EET समय क्षेत्र: पूर्वी यूरोपीय समय
2019 वर्ष

3. एक विशिष्ट तिथि निर्धारित करना

हमने यह पता लगाया कि वर्तमान समय कैसे प्राप्त किया जाए, लेकिन हम एक ऐसी Dateवस्तु कैसे बनाते हैं जो एक अलग तिथि या समय को संग्रहीत करती है?

यहाँ फिर से सब कुछ सरल है। एक विशिष्ट तिथि निर्धारित करने के लिए, आपको इस तरह कोड लिखना होगा:

Date birthday = new Date(year, month, day);

सब कुछ सरल और स्पष्ट है, लेकिन इसके बारे में जानने के लिए दो बारीकियाँ हैं:

  1. वर्ष को 1900 से गिना जाना चाहिए।
  2. महीने शून्य से गिने जाते हैं।
दिलचस्प।

यह यूनिक्स ऑपरेटिंग सिस्टम की एक और विरासत है: यूनिक्स पर, प्रोग्रामर ने दो अंकों का उपयोग करते हुए वर्ष को निरूपित किया। 1977 के बजाय, उन्होंने केवल 77 लिखा। इसलिए 77 सही वर्ष है यदि हम 1900 से गिनें।

उदाहरण के लिए, मेरा जन्म 21 मार्च 1989 को हुआ था। मार्च तीसरा महीना है, इसलिए मुझे लिखने की आवश्यकता है:

कोड कंसोल आउटपुट
Date current = new Date(89, 2, 21);
System.out.println(current);
Tue Mar 21 00:00:00 EET 1989

महीने शून्य से गिने जाते हैं, लेकिन दिन नहीं यह थोड़ा अजीब है, है ना?

हमें लगता है कि सच्चे प्रोग्रामरों को प्रबल होना चाहिए था और महीने के दिनों को शून्य से भी गिना जाना चाहिए था। ओह, ये कन्फर्मिस्ट 🙂

एक विशिष्ट समय निर्धारित करना

एक विशिष्ट समय निर्धारित करना भी काफी सरल है: इसके लिए आपको इस तरह का एक बयान लिखना होगा:

Date birthday = new Date(year, month, day, hour, minutes, seconds);

घंटे, मिनट और सेकंड शून्य से गिने जाते हैं: अपने अंदर के प्रोग्रामर को राहत की सांस लेने दें।

उदाहरण:

कोड कंसोल आउटपुट
Date current = new Date(105, 5, 4, 12, 15, 0);
System.out.println(current);
Sat Jun 04 12:15:00 EEST 2005

हम समय 12:15 और दिनांक 4 जून, 2005 निर्धारित करते हैं । एक गैर-प्रोग्रामर के लिए इसे पढ़ना थोड़ा मुश्किल है, लेकिन यह उसी तरह काम करता है जैसा इसे करना चाहिए।


4. दिनांक के तत्वों के साथ कार्य करना

Dateआप किसी वस्तु को केवल प्रदर्शित करने के अलावा और भी बहुत कुछ कर सकते हैं । इसमें ऐसी विधियाँ हैं जो आपको आंतरिक रूप से संग्रहीत तिथि के अलग-अलग तत्व प्राप्त करने देती हैं:

तरीका विवरण
int getYear()
1900 के सापेक्ष दिनांक का वर्ष लौटाता है।
int getMonth()
तारीख का महीना लौटाता है (महीने शून्य से गिने जाते हैं)
int getDate()
महीने का दिन लौटाता है
int getDay()
सप्ताह का दिन लौटाता है
int getHours()
घंटे लौटाता है
int getMinutes()
मिनट लौटाता है
int getSeconds()
सेकेंड लौटाता है

उदाहरण:

कोड कंसोल आउटपुट टिप्पणी
Date current = new Date(105, 5, 4, 12, 15, 0);
System.out.println(current.getYear());
System.out.println(current.getMonth());
System.out.println(current.getDate());
System.out.println(current.getDay());

105
5
4
6

2005
जून
महीने का दिन
शनिवार

वैसे, एक Dateवस्तु न केवल आपको किसी तिथि के अलग-अलग तत्व प्राप्त करने देती है, बल्कि उन्हें बदल भी देती है:

तरीका विवरण
void setYear(int year) तिथि का वर्ष बदलता है। वर्ष 1900 के सापेक्ष इंगित किया गया है।
void setMonth(int month) तिथि का महीना बदलता है (महीने शून्य से गिने जाते हैं)
void setDate(int date) महीने का दिन बदलता है
void setHours(int hours) घंटे बदलता है
void setMinutes(int minutes) मिनट बदलते हैं
void setSeconds(int seconds) सेकंड बदलता है

5. मिलीसेकंड

जैसा कि हमने पहले कहा, Dateऑब्जेक्ट 1 जनवरी, 1970 से बीत चुके मिलीसेकंड की संख्या को संग्रहीत करता है।

यदि हमें उस संख्या की आवश्यकता है, तो हम उसे Dateवस्तु से प्राप्त कर सकते हैं:

long time = date.getTime();

विधि वस्तु getTime()के अंदर संग्रहीत मिलीसेकंड की संख्या लौटाती है ।Date

आप न केवल मिलीसेकंड की संख्या प्राप्त कर सकते हैं, बल्कि आप उस संख्या को किसी मौजूदा वस्तु में भी बदल सकते हैं:

Date date = new Date();
date.setTime(1117876500000L);

वैसे, आप इसे और भी संक्षिप्त रूप में लिख सकते हैं जब Dateवस्तु को सही समय पर बनाया जाता है जब इसे बनाया जाता है:

Date date = new Date(1117876500000L);

6. तारीखों की तुलना करना

यदि आप दो तिथियों की तुलना करना चाहते हैं और यह पता लगाना चाहते हैं कि कौन सी पहले आई, तो आपके पास तीन विकल्प हैं

पहला तरीका यह है कि वे प्रत्येक स्टोर में मिलीसेकंड की संख्या की तुलना करें:

if (date1.getTime() < date2.getTime())

दूसरा तरीकाbefore() किसी Dateवस्तु की विधि का उपयोग करना है :

if (date1.before(date2))

यह इस तरह पढ़ता है: यदि date1पहले आता है date2, तो...

तीसरा तरीकाafter() किसी Dateवस्तु की विधि का उपयोग करना है :

if (date2.after(date1))

यह इस तरह पढ़ता है: यदि date2बाद में है date1, तो...


7. DateFormatवर्ग

याद रखें, जब हमने स्क्रीन पर तारीख प्रदर्शित की, तो हमें कुछ ऐसा दिखाई दिया: Thu Feb 21 14:01:34 EET 2019. सब कुछ सही लगता है, लेकिन प्रारूप अधिक है कि सामान्य मनुष्यों के बजाय प्रोग्रामर के लिए एक तिथि कैसे प्रदर्शित की जाएगी। हम उपयोगकर्ताओं के लिए तिथि को और अधिक स्पष्ट रूप से प्रदर्शित करना चाहते हैं। कुछ इस तरह Tuesday, February 21

और साल के बिना। या यदि आवश्यक हो तो एक वर्ष के साथ। सामान्य तौर पर, हम तारीख को अलग-अलग तरीकों से प्रदर्शित करने में सक्षम होना चाहते हैं।

इसके लिए एक विशेष वर्ग है: SimpleDateFormat.

उदाहरण:

कोड
Date current = new Date(105, 5, 4, 12, 15, 0);
SimpleDateFormat formatter = new SimpleDateFormat("MMM-dd-YYYY");
String message = formatter.format(current);
System.out.println(message);
कंसोल आउटपुट
Jun-04-2005

देखें कि कार्यक्रम क्या प्रदर्शित करता है: Jun-04-2005. वो बिल्कुल नहीं रहा जो पहले हुआ करता था।

अंतर यह है कि हमने Dateवस्तु को ही नहीं, बल्कि वस्तु format()पर विधि को कॉल करके प्राप्त एक विशेष स्ट्रिंग को प्रदर्शित किया। SimpleDateFormatलेकिन वह यहाँ मुख्य बिंदु भी नहीं है।

जब SimpleDateFormatऑब्जेक्ट बनाया गया था, हम स्ट्रिंग में "MMM-dd-YYYY"पैरामीटर के रूप में पास हुए थे। यह वह स्ट्रिंग है जो उस दिनांक प्रारूप को बताती है जिसे हमने अंततः कंसोल आउटपुट में देखा था।

  • MMM तीन अक्षरों का उपयोग करके संक्षिप्त रूप में महीने का नाम प्रदर्शित करने का संकेत देता है
  • dd महीने का दिन प्रदर्शित करने का संकेत देता है
  • YYYY चार अंकों का उपयोग करके वर्ष प्रदर्शित करने का संकेत देता है

यदि हम महीने को संख्याओं के रूप में आउटपुट करना चाहते हैं, तो इसके बजाय MMMहमें लिखना होगा MM, जो पैटर्न उत्पन्न करता है "MM-dd-YYYY"। स्क्रीन आउटपुट होगा06-04-2005

हम बाद में इस वर्ग पर और अधिक विस्तार से चर्चा करेंगे।


8. Date.parseविधि

कक्षा Dateकुछ और रोचक और उपयोगी कर सकती है — यह एक स्ट्रिंग से एक तिथि प्राप्त कर सकती है। या, जैसा कि प्रोग्रामर कहते हैं, यह एक स्ट्रिंग को पार्स कर सकता है।

parse()इसके लिए इसकी खास विधि है । पार्सिंग ऐसा दिखता है:

Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );

वैसे, यह कोड अधिक संक्षिप्त रूप से लिखा जा सकता है:

Date date = new Date("Jul 06 12:15:00 2019");

हम अन्य पाठों में स्ट्रिंग्स की पार्सिंग पर अधिक विस्तार से विचार करेंगे।