1. ZonedDateTimeతరగతి

తేదీ సమయ 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.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()
తేదీ యొక్క నెల సూచికను అందిస్తుంది. జనవరి == 1
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)
నానోసెకన్లను తీసివేస్తుంది

మేము ఇప్పుడే పరిగణించిన తరగతులతో సారూప్యతతో ఇక్కడ ప్రతిదీ స్పష్టంగా ఉందని మేము భావిస్తున్నందున మేము ఎటువంటి ఉదాహరణలను అందించము.