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

कन्सोल आउटपुटचा अर्थ काय आहे ते येथे आहे:

मजकूर व्याख्या
गुरुवार rsday गुरुवार
21 फेब्रुवारी 21 फेब्रुवारी
14:01:34 तास: मिनिटे: सेकंद
EET वेळ क्षेत्र: पूर्व युरोपियन वेळ
2019 वर्ष

3. विशिष्ट तारीख सेट करणे

Dateवर्तमान वेळ कशी मिळवायची हे आम्ही शोधून काढले, परंतु भिन्न तारीख किंवा वेळ संग्रहित करणारी वस्तू कशी तयार करावी ?

पुन्हा, येथे सर्वकाही सोपे आहे. विशिष्ट तारीख सेट करण्यासाठी, तुम्हाला खालीलप्रमाणे कोड लिहावा लागेल:

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

सर्व काही सोपे आणि स्पष्ट आहे, परंतु त्याबद्दल दोन बारकावे आहेत:

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

युनिक्स ऑपरेटिंग सिस्टमचा हा आणखी एक वारसा आहे: युनिक्सवर, प्रोग्रामर दोन अंक वापरून वर्ष दर्शवतात. 1977 च्या ऐवजी, त्यांनी फक्त 77 लिहिले. म्हणून आपण 1900 पासून मोजले तर 77 हे योग्य वर्ष आहे.

उदाहरणार्थ, माझा जन्म 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");

आम्ही इतर धड्यांमध्ये स्ट्रिंगच्या पार्सिंगचा अधिक तपशीलवार विचार करू.