CodeGym /జావా కోర్సు /మాడ్యూల్ 1 /క్యాలెండర్ తరగతి

క్యాలెండర్ తరగతి

మాడ్యూల్ 1
స్థాయి , పాఠం
అందుబాటులో ఉంది

1. తరగతి నుండి Dateతరగతికి మారడంCalendar

ప్రోగ్రామర్లు Dateదాని సరళత మరియు Unix ప్రమాణాలకు మద్దతు కోసం తరగతిని ఇష్టపడ్డారు, కానీ మీకు తెలిసినట్లుగా, ప్రతి గులాబీకి దాని ముళ్ళు ఉంటాయి.

ప్రోగ్రామర్లు "స్మార్ట్" తరగతిని కోరుకున్నారు Date. మరియు వారు కోరుకున్నది తరగతి రూపంలో పొందారు Calendar. ఇది తేదీలను నిల్వ చేయడానికి మాత్రమే కాకుండా, తేదీలతో కష్టమైన కార్యకలాపాలను నిర్వహించడానికి కూడా ఒక మార్గంగా భావించబడింది.

తరగతి పూర్తి పేరు Calendarjava.util.Calendar. మీరు దానిని మీ కోడ్‌లో ఉపయోగించాలని నిర్ణయించుకుంటే, దానిని దిగుమతి ప్రకటనకు జోడించడం మర్చిపోవద్దు.

Calendarమీరు ఈ ఆదేశంతో ఒక వస్తువును సృష్టించవచ్చు :

Calendar date = Calendar.getInstance();

getInstance()తరగతి యొక్క స్టాటిక్ పద్ధతి ప్రస్తుత తేదీతో ప్రారంభించబడిన వస్తువును Calendarసృష్టిస్తుంది . Calendarప్రోగ్రామ్‌ని నడుపుతున్న కంప్యూటర్ సెట్టింగ్‌ల ఆధారంగా మీకు కావలసిన క్యాలెండర్ సృష్టించబడుతుంది.

లేదా మరింత ఖచ్చితంగా, మీరు పొందే క్యాలెండర్... భూమిపై ఉన్న మానవులు ఒకే క్యాలెండర్‌కు పరిమితం కాకపోవడం. బదులుగా, వారు చాలా ఉపయోగిస్తారు. మరియు వాటిలో దాదాపు ప్రతి ఒక్కటి ఏదో ఒక మతం లేదా దేశంతో సంబంధం కలిగి ఉంటాయి. తరగతి Calendarవాటిలో 3కి మద్దతు ఇస్తుంది:

క్యాలెండర్ వివరణ
గ్రెగోరియన్ క్యాలెండర్ క్రిస్టియన్ గ్రెగోరియన్ క్యాలెండర్
బౌద్ధ క్యాలెండర్ బౌద్ధ క్యాలెండర్
జపనీస్ ఇంపీరియల్ క్యాలెండర్ జపనీస్ ఇంపీరియల్ క్యాలెండర్

కానీ చైనీస్ మరియు అరబిక్ క్యాలెండర్లు కూడా ఉన్నాయి. సాధారణంగా, సమయంతో పని చేయడం అంత సులభం కాదు.

చైనీస్ క్యాలెండర్‌లో, ఈ పాఠం వ్రాసే సమయంలో అధికారికంగా సంవత్సరం 4716. మరియు ముస్లిం క్యాలెండర్ ప్రకారం, సంవత్సరం 1398. పెద్ద ప్రపంచానికి స్వాగతం, నా ప్రోగ్రామర్ స్నేహితుడు.

2. క్యాలెండర్ వస్తువును సృష్టించడం

మేము గ్రెగోరియన్ క్యాలెండర్‌ను ఉపయోగిస్తాము, ఎందుకంటే ఇది ప్రపంచంలో సర్వసాధారణం. కనీసం చైనా ఒరాకిల్‌ను కొనుగోలు చేసి, చైనీస్ క్యాలెండర్‌ను ప్రధానమైనదిగా మార్చే వరకు.

మీరు ఇలాంటి స్టేట్‌మెంట్‌ని ఉపయోగించి ఏదైనా తేదీతో క్యాలెండర్ ఆబ్జెక్ట్‌ని సృష్టించవచ్చు:

Calendar date = new GregorianCalendar(year, month, day);

GregorianCalendarఅవును, మీరు ప్రతిసారీ వ్రాయవలసి ఉంటుంది . బదులుగా Calendar, మీరు కూడా వ్రాయవచ్చు GregorianCalendar— అది కూడా పని చేస్తుంది. కానీ రాయడం చాలా Calendarతక్కువ.

సంవత్సరాన్ని పూర్తిగా వ్రాయాలి, ఉదా మీరు 2019కి బదులుగా 19 అని వ్రాయలేరు. నెలలు ఇప్పటికీ సున్నా నుండి లెక్కించబడతాయి. అయితే మునుపటిలా నెల రోజులు సున్నా నుంచి లెక్కించబడవు. మేధావులు!

సమయాన్ని అలాగే తేదీని సెట్ చేయడానికి, మీరు అదనపు ఆర్గ్యుమెంట్‌లుగా సమయాన్ని పాస్ చేయాలి:

... = new GregorianCalendar(year, month, day, hours, minutes, seconds);

అవసరమైతే మీరు మిల్లీసెకన్లలో కూడా పాస్ చేయవచ్చు. అవి సెకన్ల సంఖ్య తర్వాత పరామితి.

3. స్క్రీన్‌పై క్యాలెండర్ వస్తువును ప్రదర్శిస్తోంది

మీరు స్క్రీన్‌పై క్యాలెండర్ ఆబ్జెక్ట్‌ను ప్రింట్ చేస్తే, ఫలితంతో మీరు చాలా సంతోషించలేరు.

కోడ్
Calendar calendar = new GregorianCalendar(2019, 03, 12);
System.out.println(calendar);
కన్సోల్ అవుట్‌పుట్
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Helsinki",offset=7200000,dstSavings=3600000,useDaylight=true,transitions=118,lastRule=java.util.SimpleTimeZone[id=Europe/Helsinki,offset=7200000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2019,MONTH=3,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=12,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]

ఇక్కడ గుర్తుంచుకోవలసిన విషయం ఏమిటంటే, క్యాలెండర్ అనేది క్యాలెండర్, తేదీ కాదు : ఇది స్క్రీన్‌పై ప్రదర్శించబడే అన్ని రకాల సెట్టింగ్‌లను కలిగి ఉంటుంది.

SimpleDateFormatక్యాలెండర్‌ను ప్రదర్శించడానికి వస్తువును ఉపయోగించడం సరైనది , కానీ మేము దానిని అధ్యయనం చేసే వరకు, మీరు ఈ లైఫ్ హ్యాక్‌ని ఉపయోగించవచ్చు.

Date date = calendar.getTime();

ఒక Calendarవస్తువును సులభంగా ఆబ్జెక్ట్‌గా మార్చవచ్చు Dateమరియు ఆబ్జెక్ట్‌ను ఎలా ప్రదర్శించాలో మీకు ఇప్పటికే తెలుసు Date. Calendarఆబ్జెక్ట్‌ని ఇలా మార్చడానికి మీరు ఇలాంటి కోడ్‌ని ఉపయోగించవచ్చు Date:

పద్ధతిని ఉపయోగించడం getTime():

కోడ్ కన్సోల్ అవుట్‌పుట్
Calendar calendar = new GregorianCalendar(2019, 03, 12);
System.out.println(calendar.getTime());
 Fri Apr 12 00:00:00 EEST 2019

అది చాలా భిన్నమైన విషయం, కాదా?

4. తేదీ అంశాలతో పని చేయడం

తేదీ యొక్క నిర్దిష్ట మూలకాన్ని పొందడానికి (ఉదా. సంవత్సరం, నెల, ...), తరగతి పద్ధతిని Calendarకలిగి ఉంటుంది get(). ఇది ఒకే పద్ధతి, కానీ దీనికి పారామితులు ఉన్నాయి:

int month = calendar.get(Calendar.MONTH);

వేరియబుల్ ఎక్కడ calendarఉంది Calendarమరియు క్లాస్ MONTHయొక్క స్థిరమైన ఫీల్డ్ Calendar.

Calendarమీరు పద్ధతికి వాదనగా క్లాస్ యొక్క స్థిరమైన ఫీల్డ్‌లలో ఒకదానిని పాస్ చేసారు getమరియు ఫలితంగా మీరు కోరుకున్న విలువను పొందుతారు.

ఉదాహరణలు

కోడ్ వివరణ
Calendar calendar = Calendar.getInstance();

int era = calendar.get(Calendar.ERA);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);

int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);


శకం ​​(సాధారణ యుగానికి ముందు లేదా తర్వాత)
సంవత్సరం
నెల
రోజు

వారంలోని
రోజు గంటల
నిమిషాల
సెకన్లు

తేదీ యొక్క మూలకాన్ని మార్చడానికి, ఈ setపద్ధతిని ఉపయోగించండి:

calendar.set(Calendar.MONTH, value);

వేరియబుల్ ఎక్కడ calendarఉంది Calendarమరియు క్లాస్ MONTHయొక్క స్థిరమైన ఫీల్డ్ Calendar.

పద్ధతితో పని చేస్తున్నప్పుడు set, మీరు క్లాస్ యొక్క స్థిరమైన ఫీల్డ్‌లలో ఒకదాన్ని Calendarమొదటి ఆర్గ్యుమెంట్‌గా మరియు కొత్త విలువను రెండవ ఆర్గ్యుమెంట్‌గా పాస్ చేస్తారు.

ఉదాహరణలు

కోడ్ వివరణ
Calendar calendar = new GregorianCalendar();

calendar.set(Calendar.YEAR, 2019);
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.DAY_OF_MONTH, 4);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 0);

System.out.println(calendar.getTime());


సంవత్సరం = 2019
నెల = జూలై (0 నుండి సంఖ్య)
4వ రోజు
గంటల
నిమిషాల
సెకన్లు

5. తరగతి Calendarస్థిరాంకాలు

తరగతి యొక్క స్థిరమైన ఫీల్డ్‌లు Calendarతేదీలోని మూలకాలకు పేరు పెట్టడానికి మాత్రమే పరిమితం కాలేదు. ప్రతి సందర్భానికీ పొలాలు కనిపిస్తున్నాయి.

Calendar date = new GregorianCalendar(2019, Calendar.JANUARY, 31);

ఉదాహరణకు, నెలలను సూచించడానికి స్థిరమైన ఫీల్డ్‌లు ఉన్నాయి:

మరియు వారంలోని రోజులు కూడా:

Calendar calendar = new GregorianCalendar(2019, Calendar.JANUARY, 31);
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY)
{
   System.out.println("It's Friday");
}

మేము ప్రతిదీ జాబితా చేయము. మీరు కోడ్‌లో ఇలాంటి స్థిరాంకాలు కనిపిస్తే మీరు ఆశ్చర్యపోకూడదనుకుంటున్నాము.

స్థిరాంకాలను ఉపయోగించడం వల్ల కోడ్ మరింత చదవగలిగేలా చేస్తుంది, అందుకే ప్రోగ్రామర్లు వాటిని ఉపయోగిస్తారు. మరియు చదవగలిగేలా మెరుగుపరచడానికి సున్నా నుండి నెలలు లెక్కించబడతాయి. లేదా.

Calendar6. వస్తువులో తేదీని మార్చడం

తరగతి Calendarమరింత తెలివైన మార్గాల్లో తేదీని నిర్వహించేందుకు మిమ్మల్ని అనుమతించే పద్ధతిని కలిగి ఉంది. ఉదాహరణకు, మీరు తేదీకి ఒక సంవత్సరం, ఒక నెల లేదా చాలా రోజులను జోడించవచ్చు. లేదా వాటిని తీసివేయండి. ఈ పద్ధతి అంటారు add(). దానితో పని చేయడం ఇలా కనిపిస్తుంది:

calendar.add(Calendar.MONTH, value);

వేరియబుల్ ఎక్కడ calendarఉంది Calendarమరియు క్లాస్ MONTHయొక్క స్థిరమైన ఫీల్డ్ Calendar.

పద్ధతితో పని చేస్తున్నప్పుడు add, మీరు క్లాస్ యొక్క స్థిరమైన ఫీల్డ్‌లలో ఒకదానిని Calendarమొదటి ఆర్గ్యుమెంట్‌గా మరియు రెండవ ఆర్గ్యుమెంట్‌గా పాస్ చేస్తారు — జోడించాల్సిన కొత్త విలువ.

ఇది మరొక తెలివైన పద్ధతి. ఇది ఎంత తెలివైనదో చూద్దాం:

కోడ్
Calendar calendar = new GregorianCalendar(2019, Calendar.FEBRUARY, 27);
calendar.add(Calendar.DAY_OF_MONTH, 2);
System.out.println(calendar.getTime());
కన్సోల్ అవుట్‌పుట్
Fri Mar 01 00:00:00 EET 2019

ఫిబ్రవరి 2019లో కేవలం 28 రోజులు మాత్రమే ఉన్నాయని ఈ పద్ధతి అర్థం చేసుకుంటుంది, కాబట్టి ఫలితంగా వచ్చే తేదీ మార్చి 1.

ఇప్పుడు 2 నెలలు తీసుకుందాం! మనం ఏమి పొందాలి? డిసెంబర్ 27, 2018! ఇప్పుడు తనిఖీ చేద్దాం.

మునుపటి తేదీకి దారితీసే ఆపరేషన్ చేయడానికి, మీరు ఈ add()పద్ధతికి ప్రతికూల విలువను పాస్ చేయాలి:

కోడ్
Calendar calendar = new GregorianCalendar(2019, Calendar.FEBRUARY, 27);
calendar.add(Calendar.MONTH, -2);
System.out.println(calendar.getTime());
కన్సోల్ అవుట్‌పుట్
Thu Dec 27 00:00:00 EET 2018

ఇది పనిచేస్తుంది!

ఈ పద్ధతి నెలలు మరియు లీపు సంవత్సరాల వేర్వేరు పొడవులను గణిస్తుంది. మొత్తం మీద, ఒక గొప్ప పద్ధతి. తేదీలతో పనిచేసే చాలా మంది ప్రోగ్రామర్‌లకు ఇది ఖచ్చితంగా అవసరం.

7. తేదీ యొక్క రోలింగ్ అంశాలు

కానీ కొన్నిసార్లు మేము ఈ స్మార్ట్ ప్రవర్తనను కోరుకోనప్పుడు సందర్భాలు ఉన్నాయి, ఉదా. మీరు తేదీలోని ఒక భాగానికి ఏదైనా మార్చకుండా ఏదైనా చేయాలనుకుంటున్నారు.

దీని కోసం తరగతికి Calendarప్రత్యేక roll()పద్ధతి ఉంది. దీని సంతకం కూడా పద్ధతి వలెనే ఉంటుంది add(), కానీ ఈ పద్ధతి తేదీలోని ఒక మూలకాన్ని మాత్రమే మారుస్తుంది, మిగిలినవి మారవు.

ఉదాహరణ:

కోడ్
Calendar calendar = new GregorianCalendar(2019, Calendar.FEBRUARY, 27);
calendar.roll(Calendar.MONTH, -2);
System.out.println(calendar.getTime());
కన్సోల్ అవుట్‌పుట్
Fri Dec 27 00:00:00 EET 2019

మేము నెలను మార్చాము, కానీ సంవత్సరం మరియు తేదీ మారలేదు.


వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION