1. தேதி நேர API ஐ அறிமுகப்படுத்துகிறது

தேதி நேர API ஐ அறிமுகப்படுத்துகிறது

ஜாவாவின் படைப்பாளிகளுக்கு தேதி மற்றும் காலெண்டர் வகுப்புகளின் நிலைமை பிடிக்கவில்லை. அவர்கள் தங்கள் நாளில் நன்றாக இருந்தனர், ஆனால் காலம் மாறுகிறது. எளிமையான, சக்திவாய்ந்த மற்றும் நம்பகமான ஒன்று தேவைப்பட்டது. மற்றும் ஜாவா 8 வெளியீட்டில் (15 ஆண்டுகளுக்குப் பிறகு Calendar), ஜாவா தேதி நேர API அறிமுகப்படுத்தப்பட்டது. இது வகுப்புகளின் தொகுப்பாகும், இது நேரத்தைக் கையாளும் ஒவ்வொரு சாத்தியமான பணியையும் தீர்க்க முடியும்.

பல வகுப்புகள் இருந்தன, அவை பல தொகுப்புகளாகப் பிரிக்கப்பட்டன:

தொகுப்பானது ஜாவா தேதி நேர APIக்கான அடிப்படை தொகுப்பாகும்: இது , , , , மற்றும் java.timeபோன்ற வகுப்புகளைக் கொண்டுள்ளது . இந்த வகுப்புகளின் அனைத்து பொருட்களும் , அதாவது உருவாக்கத்திற்குப் பிறகு அவற்றை மாற்ற முடியாது.LocalDateLocalTimeLocalDateTimeInstantPeriodDurationimmutable

தொகுப்பில் java.time.formatநேர வடிவமைப்பிற்கான வகுப்புகள் உள்ளன, அதாவது நேரங்களை (மற்றும் தேதிகளை) சரங்களாக மாற்றும் மற்றும் நேர்மாறாகவும். எடுத்துக்காட்டாக, இது பல்துறை DateTimeFormatterவகுப்பைக் கொண்டுள்ளது, இது SimpleDateFormatவகுப்பை மாற்றுகிறது.

தொகுப்பில் java.time.zoneநேர மண்டலங்களுடன் வேலை செய்வதற்கான வகுப்புகள் உள்ளன. TimeZoneஇது போன்ற வகுப்புகள் உள்ளன ZonedDateTime. உலகின் பல்வேறு பகுதிகளில் உள்ள வாடிக்கையாளர்களுக்கு நீங்கள் சர்வர் குறியீட்டை எழுதுகிறீர்கள் என்றால், உங்களுக்கு உண்மையில் இந்த வகுப்புகள் தேவைப்படும்.


2. LocalDateவர்க்கம்

நாம் பார்க்கும் தேதி நேர API இலிருந்து முதல் மற்றும் மிகவும் பயனுள்ள வகுப்பு வகுப்பாகும் LocalDate. அதன் பெயரிலிருந்து நீங்கள் யூகிக்கக்கூடியது போல, இந்த வகுப்பு தேதிகளுடன் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது.

இந்த வகுப்பின் பொருள்கள் உருவாக்கப்பட்ட பிறகு மாறாது, அதாவது வர்க்கம் LocalDateமாறாதது. ஆனால் இந்த சொத்து வகுப்பிற்கு எளிமை மற்றும் நம்பகத்தன்மையை சேர்க்கிறது. குறிப்பாக பல இழைகள் (செயல்படுத்தும் நூல்கள்) ஒரே நேரத்தில் அத்தகைய பொருளுடன் தொடர்பு கொண்டால்.

ஒரு புதிய பொருளை உருவாக்க LocalDate, நீங்கள் நிலையான முறைகளில் ஒன்றைப் பயன்படுத்த வேண்டும். இங்கே முக்கிய பட்டியல்.

தற்போதைய தேதியைப் பெறுகிறது

தற்போதைய தேதியைப் பெற, நீங்கள் நிலையான now()முறையைப் பயன்படுத்த வேண்டும். இது தோன்றுவதை விட மிகவும் எளிதானது:

LocalDate today = LocalDate.now();

todayஒரு மாறி எங்கே LocalDate, மற்றும் வகுப்பின் LocalDate.now()நிலையான முறைக்கான அழைப்பு .now()LocalDate

உதாரணமாக:

குறியீடு கன்சோல் வெளியீடு
LocalDate today = LocalDate.now();
System.out.println("Today = " + today);

Today = 2019-02-22

ஒரு குறிப்பிட்ட நேர மண்டலத்தில் தேதியைப் பெறுதல்

வகுப்பில் ஒரு குறிப்பிட்ட நேர மண்டலத்தில் தற்போதைய தேதியைப் பெற உங்களை அனுமதிக்கும் முறையின் LocalDateமாறுபாடும் உள்ளது .now(ZoneId)

இதைச் செய்ய, எங்களுக்கு மற்றொரு வகுப்பு தேவை - ZoneIdவகுப்பு (java.time.ZoneId). இது நேர மண்டலத்தின் பெயரைக் கொடுக்கப்பட்ட of()ஒரு பொருளைத் திருப்பியளிக்கும் முறையைக் கொண்டுள்ளது.ZoneId

ஷாங்காயில் தற்போதைய தேதியைத் தீர்மானிக்க, நீங்கள் பின்வரும் குறியீட்டை எழுத வேண்டும்:

குறியீடு கன்சோல் வெளியீடு
ZoneId  timezone = ZoneId.of("Asia/Shanghai");
LocalDate today = LocalDate.now(timezone);
System.out.println("In Shanghai, now = " + today);


In Shanghai, now = 2019-02-22

இணையத்தில் அனைத்து நேர மண்டலங்களின் பெயர்களின் பட்டியலை நீங்கள் காணலாம்.


3. ஒரு குறிப்பிட்ட தேதியைப் பெறுதல்

LocalDateஒரு குறிப்பிட்ட தேதியைக் குறிக்கும் பொருளைப் பெற , நீங்கள் நிலையான of()முறையைப் பயன்படுத்த வேண்டும். இங்கே எல்லாம் மிகவும் எளிமையானது மற்றும் தெளிவானது:

LocalDate date = LocalDate.of(2019, Month.FEBRUARY, 22);

dateஒரு மாறி எங்கே LocalDate, மற்றும் வகுப்பின் நிலையான முறைக்கான அழைப்பு .LocalDate.of()of()LocalDate

பிப்ரவரியை மாதமாகக் குறிப்பிட வகுப்பின் FEBRUARYமாறிலி (java.time.Month) பயன்படுத்தப்படுவதை இங்கே காண்கிறோம் .Month

ஒரு எண்ணைப் பயன்படுத்தி, பழைய முறையிலும் மாதத்தைக் குறிப்பிடலாம்:

LocalDate date = LocalDate.of(2019, 2, 22);

இரண்டு? பிப்ரவரிக்கு பதிலாக? அதாவது மாதங்கள் மீண்டும் ஒன்றிலிருந்து எண்ணப்படுகின்றனவா?

ஆம், ஜாவா உருவாக்கப்பட்டு ஏறக்குறைய 20 ஆண்டுகளுக்குப் பிறகு, மாதங்கள் பூஜ்ஜியத்திலிருந்து எண்ணப்படுவதை நிறுத்திவிட்டன.

உதாரணமாக:

குறியீடு கன்சோல் வெளியீடு
LocalDate today = LocalDate.of(2019, 2, 22);
System.out.println("Today = " + today);

Today = 2019-02-22

நாளின் குறியீட்டின் மூலம் தேதியைப் பெறுதல்

ஒரு தேதியை உருவாக்க மற்றொரு சுவாரஸ்யமான வழி உள்ளது: ofYearDayமுறையைப் பயன்படுத்தி, ஆண்டின் எண்ணிக்கை மற்றும் ஆண்டின் நாளின் குறியீட்டின் அடிப்படையில் மட்டுமே தேதியைப் பெற முடியும். பொதுவான தோற்றம் இங்கே:

LocalDate date = LocalDate.ofYearDay(year, day);

yearஆண்டின் எண் மற்றும் dayஆண்டின் நாளின் குறியீடு எங்கே .

உதாரணமாக:

குறியீடு கன்சோல் வெளியீடு
LocalDate today = LocalDate.ofYearDay(2019, 100);
System.out.println("Today = " + today);

Today = 2019-04-10

2019 இன் 100வது நாள் ஏப்ரல் 10 ஆகும்.

யுனிக்ஸ் தேதியைப் பெறுகிறது

Dateஜனவரி 1, 1970 முதல், பொருள்கள் எப்போதும் மில்லி விநாடிகளின் எண்ணிக்கையாக நேரத்தைச் சேமித்து வைத்தது உங்களுக்கு நினைவிருக்கிறதா ? புரோகிராமர்கள் நல்ல பழைய நாட்களைத் தவறவிட மாட்டார்கள் என்பதை உறுதிப்படுத்த, LocalDateவகுப்பிற்கு ஒரு ofEpochDay()முறை கிடைத்தது, இது ஜனவரி 1, 1970 இலிருந்து கணக்கிடப்பட்ட தேதியை வழங்கும். பொதுவான தோற்றம் இதோ:

LocalDate date = LocalDate.ofEpochDay(day);

ஜனவரி 1, 1970 முதல் எத்தனை dayநாட்கள் கழிந்தன.

உதாரணமாக:

குறியீடு கன்சோல் வெளியீடு
LocalDate today = LocalDate.ofEpochDay(1);
System.out.println("Today = " + today);

Today = 1970-01-02

4. தேதியின் கூறுகளைப் பெறுதல்

பொருள்களை மாற்றுவது சாத்தியமில்லை LocalDate, ஆனால் சேமிக்கப்பட்ட தேதியின் தனிப்பட்ட கூறுகளை நீங்கள் பெறலாம். LocalDateபொருள்கள் இதற்கு பல வழிகளைக் கொண்டுள்ளன:

முறை விளக்கம்
int getYear()
ஒரு குறிப்பிட்ட தேதியின் ஆண்டை வழங்குகிறது
Month getMonth()
தேதியின் மாதத்தை வழங்குகிறது: பல மாறிலிகளில் ஒன்று
JANUARY, FEBRUARY, ...;
int getMonthValue()
தேதி மாதத்தின் குறியீட்டை வழங்குகிறது. ஜனவரி == 1.
int getDayOfMonth()
மாதத்தின் நாளின் குறியீட்டை வழங்கும்
int getDayOfYear()
ஆண்டின் தொடக்கத்தில் இருந்து நாள் குறியீட்டை வழங்குகிறது
DayOfWeek getDayOfWeek()
வாரத்தின் நாளை வழங்கும்: பல மாறிலிகளில் ஒன்று
MONDAY, TUESDAY, ...;
IsoEra getEra()
சகாப்தத்தை வழங்குகிறது: BCE(தற்போதைய சகாப்தத்திற்கு முன்) மற்றும் CE(தற்போதைய சகாப்தம்)

உதாரணமாக:

குறியீடு கன்சோல் வெளியீடு
LocalDate today = LocalDate.now();
System.out.println(today.getYear());
System.out.println(today.getMonth());
System.out.println(today.getMonthValue());
System.out.println(today.getDayOfMonth());
System.out.println(today.getDayOfWeek());

2019
FEBRUARY
2
22
FRIDAY

LocalDate5. ஒரு பொருளில் தேதியை மாற்றுதல்

வகுப்பில் LocalDateதேதிகளுடன் பணிபுரிய உங்களை அனுமதிக்கும் பல முறைகள் உள்ளன. இந்த முறைகளை செயல்படுத்துவது வகுப்பின் முறைகளுக்கு ஒப்பானது String: அவை ஏற்கனவே உள்ள பொருளை மாற்றாது LocalDate, மாறாக விரும்பிய தரவுகளுடன் புதிய ஒன்றைத் தருகின்றன.

வகுப்பின் முறைகள் இங்கே LocalDate:

முறை விளக்கம்
plusDays(int days)
தேதியில் குறிப்பிட்ட எண்ணிக்கையிலான நாட்களைச் சேர்க்கிறது
plusWeeks(int weeks)
தேதிக்கு வாரங்களைச் சேர்க்கிறது
plusMonths(int months)
தேதியுடன் மாதங்களைச் சேர்க்கிறது
plusYears(int years)
தேதியுடன் ஆண்டுகளைச் சேர்க்கிறது
minusDays(int days)
தேதியிலிருந்து நாட்களைக் கழிக்கிறது
minusWeeks(int weeks)
தேதியிலிருந்து வாரங்களைக் கழிக்கிறது
minusMonths(int months)
தேதியிலிருந்து மாதங்களைக் கழிக்கிறது
minusYears(int years)
தேதியிலிருந்து ஆண்டுகளைக் கழிக்கிறது

உதாரணமாக:

குறியீடு கன்சோல் வெளியீடு
LocalDate birthday = LocalDate.of(2019, 2, 28);
LocalDate nextBirthday = birthday.plusYears(1);
LocalDate firstBirthday = birthday.minusYears(30);

System.out.println(birthday);
System.out.println(nextBirthday);
System.out.println(firstBirthday);




2019-02-28
2020-02-28
1989-02-28

நாம் அழைக்கும் முறைகள் birthday objectமாறாது. அதற்கு பதிலாக, அதன் முறைகள் விரும்பிய தரவைக் கொண்ட புதிய பொருள்களைத் திருப்பித் தருகின்றன.