በጃቫ የፕሮግራም ቋንቋ ውስጥ ሁለት ቀኖችን ለማወዳደር ብዙ መንገዶች አሉ። በኮምፒዩተሮች ውስጥ አንድ ቀን በቁጥር (የውሂብ ዓይነት ሎንግ) በጊዜ አሃዶች ይወከላል - ማለትም ከጥር 1 ቀን 1970 ጀምሮ ያለፈው ሚሊሰከንዶች ብዛት። ንፅፅሮችን ለማድረግ በርካታ ዘዴዎች። ሁለት ቀኖችን ለማነጻጸር የሚያገለግል ማንኛውም ዘዴ በመሠረቱ የሁለቱን ቀኖች የጊዜ አሃዶች ማወዳደር ነው።
ደረጃ
ዘዴ 1 ከ 4: CompaTo ን በመጠቀም
ደረጃ 1. CompaTo ን ይጠቀሙ።
የቀን ዕቃው ተግባራዊ ያደርጋል ስለዚህ 2 ቀኖች በቀጥታ ከንፅፅር ዘዴ ጋር በቀጥታ ሊወዳደሩ ይችላሉ። ሁለቱም ቀኖች በሰዓት አሃዶች ውስጥ ተመሳሳይ ቁጥር ካላቸው ፣ ከዚያ ዘዴው ዜሮ ይመለሳል። ሁለተኛው ቀን ከመጀመሪያው ያነሰ ከሆነ ከዜሮ በታች የሆነ እሴት ይመለሳል። ሁለተኛው ቀን ከመጀመሪያው የሚበልጥ ከሆነ ዘዴው ከዜሮ የሚበልጥ እሴት ይመልሳል። ሁለቱም ቀኖች አንድ ከሆኑ ዘዴው ባዶ ዋጋን ይመልሳል።
ደረጃ 2. በርካታ የቀን ነገሮችን ይፍጠሩ።
ከማወዳደርዎ በፊት ብዙ የቀን ዕቃዎችን መፍጠር አለብዎት። ይህን ለማድረግ ቀላሉ መንገዶች አንዱ የ SimpleDateFormat ክፍልን መጠቀም ነው። ይህ ክፍል የግብዓት ቀን እሴትን ወደ ቀን ነገር ለመለወጥ ቀላል ያደርገዋል።
SimpleDateFormat sdf = አዲስ SimpleDateFormat ("yyyy-MM-dd")። ዋጋን በአዲስ ‹የነገር ቀን› ውስጥ ለማወጅ ፣ ቀኑን ሲፈጥሩ ተመሳሳይ የቀን ቅርጸት ይጠቀሙ። ቀን ቀን 1 = sdf.parse ("1995-02-23"); // date1 የካቲት 23 ቀን 1995 ቀን date2 = sdf.parse ("2001-10-31"); // date2 ጥቅምት 31 ቀን 2001 ቀን date3 = sdf.parse ("1995-02-23"); // date3 የካቲት 23 ቀን 1995 ነው
ደረጃ 3. የቀን ዕቃዎችን ያወዳድሩ።
የሚከተለው ኮድ ለእያንዳንዱ ጉዳይ ምሳሌዎችን ያሳየዎታል - ያነሰ ፣ እኩል እና ከዚያ በላይ።
date1.compareTo (date2); // date1 <date2 ፣ ከ 0 date2.compareTo (date1) በታች የሆነ እሴት ይመልሳል ፤ // date2> date1 ፣ ከ 0 date1.compareTo (date3) የሚበልጥ እሴት ይመልሳል ፤ // date1 = date3 ፣ ስለዚህ በኮንሶል ላይ 0 ያወጣል
ዘዴ 2 ከ 4 - እኩልዎችን መጠቀም ፣ በኋላ እና በፊት
ደረጃ 1. ተጠቀም ፣ በኋላ እና በፊት።
ቀኖችን በእኩል ፣ በኋላ እና በፊት ዘዴዎች በመጠቀም ሊወዳደሩ ይችላሉ። ሁለት ቀኖች በጊዜው ተመሳሳይ እሴት ካላቸው ፣ የእኩል ዘዴው እውነት ይመለሳል። የሚከተለው ምሳሌ በምሳሌ ማወዳደር ዘዴ ውስጥ የተፈጠረውን የቀን ነገር ይጠቀማል።
ደረጃ 2. ከቀዳሚው ዘዴ ጋር ያወዳድሩ።
የሚከተለው ኮድ እውነተኛ እና ሐሰትን የሚመልስ ምሳሌን ያሳያል። ቀን 1 ቀን ከቀን 2 በፊት ከሆነ ፣ የቀደመው ዘዴ እውነት ይመለሳል። ያለበለዚያ ፣ የቀደመው ዘዴ ወደ ሐሰት ይመለሳል።
System.out.print (date1. በፊት (date2)); // እሴቱን “እውነተኛ” ያሳዩ System.out.print (date2.before (date2)); // ዋጋውን '' ሐሰት '' ይመልሱ
ደረጃ 3. የተከተለውን ዘዴ በመጠቀም ያወዳድሩ።
የሚከተለው ኮድ እውነት እና ሐሰትን የሚመልስ ምሳሌን ያሳያል። ቀን 2 ከቀን 1 ቀን በኋላ ከሆነ ፣ በኋላ ያለው ዘዴ እውነት ሆኖ ይመለሳል። ያለበለዚያ ፣ በኋላ ያለው ዘዴ ወደ ሐሰት ይመለሳል።
System.out.print (date2.after (date1)); // ዋጋውን '' እውነተኛ '' አሳይ።
ደረጃ 4. ከእኩል ዘዴ ጋር ያወዳድሩ።
የሚከተለው ኮድ እውነት እና ሐሰትን የሚመልስ ምሳሌን ያሳያል። ሁለቱም ቀኖች እኩል ከሆኑ የእኩል ዘዴው እውነት ይመለሳል። ያለበለዚያ የእኩልነት ዘዴው ሐሰት ይመልሳል።
System.out.print (date1.equals (date3)); // ዋጋውን '' እውነተኛ '' ያሳዩ።
ዘዴ 3 ከ 4 - የክፍል ቀን መቁጠሪያን መጠቀም
ደረጃ 1. የክፍል ቀን መቁጠሪያን ይጠቀሙ።
የቀን መቁጠሪያ ክፍሉ እንዲሁ ለቅድመ ትምህርት ክፍል ቀደም ሲል ከተገለጹት ጋር ተመሳሳይ ከሚሠሩ ዘዴዎች ጋር ንፅፅር ፣ እኩል ፣ በኋላ እና በፊት አለው። ስለዚህ የቀን መረጃ በክፍል ቀን መቁጠሪያ ውስጥ ከተከማቸ ፣ ንፅፅር ለማድረግ ቀኑን ማውጣት አያስፈልግዎትም።
ደረጃ 2. የቀን መቁጠሪያ ምሳሌን ይፍጠሩ።
በክፍል ቀን መቁጠሪያ ውስጥ ዘዴዎችን ለመጠቀም ፣ ብዙ የቀን መቁጠሪያ ሁኔታዎችን መፍጠር አለብዎት። እንደ እድል ሆኖ ፣ ቀደም ሲል ከተፈጠረው የቀን ምሳሌ እሴቶቹን መጠቀም ይችላሉ።
የቀን መቁጠሪያ cal1 = Calendar.getInstance (); // cal1 የቀን መቁጠሪያ cal2 = Calendar.getInstance (); // cal2 የቀን መቁጠሪያ cal3 = Calendar.getInstance (); // cal3 cal1.setTime (date1) ያውጃሉ ፤ // ቀኑን በ cal1 cal2.setTime (date2) ውስጥ ያስገቡ ፤ cal3.setTime (date3);
ደረጃ 3. ቀዳሚውን ዘዴ በመጠቀም cal1 እና cal2 ን ያወዳድሩ።
የሚከተለው ኮድ የ tr ዋጋን ያወጣል
System.out.print (cal1. በፊት (cal2)); // እሴት ይመለሳል '' እውነተኛ ''
ደረጃ 4. የተከተለውን ዘዴ በመጠቀም cal1 እና cal2 ን ያወዳድሩ።
የሚከተለው ኮድ ሐሰት ይመለሳል ምክንያቱም cal1 ከ cal2 በፊት ያለው ቀን ነው።
System.out.print (cal1. በኋላ (cal2)); // ዋጋውን '' ሐሰት '' ይመልሱ
ደረጃ 5. የእኩል ዘዴን በመጠቀም cal1 እና cal2 ን ያወዳድሩ።
የሚከተለው ኮድ እውነት እና ሐሰትን የሚመልስ ምሳሌን ያሳያል። ግዛቱ የሚወሰነው በቀን መቁጠሪያው ምሳሌ ሲወዳደር ነው። የሚከተለው ኮድ እሴቱን “እውነተኛ” ፣ ከዚያ በሚቀጥለው መስመር ላይ “ሐሰት” ይመልሳል።
System.out.println (cal1.equals (cal3)); // እሴቱን “እውነተኛ” ይመልሱ: cal1 == cal3 System.out.print (cal1.equals (cal2)); // እሴቱን ይመልሱ '' ሐሰት '': cal1! = cal2
ዘዴ 4 ከ 4 - getTime ን መጠቀም
ደረጃ 1. getTime ን ይጠቀሙ።
እንዲሁም የሁለት ቀኖች የጊዜ አሃድ እሴቶችን በቀጥታ ማወዳደር ይችላሉ ፣ ምንም እንኳን ቀዳሚዎቹ ሁለት ዘዴዎች ለማንበብ ቀላል እና ተመራጭ ቢሆኑም። በዚህ መንገድ 2 የጥንታዊ የውሂብ ዓይነቶችን ያወዳድራሉ ፣ ስለዚህ ኦፔራኖቹን “” ፣ እና “==” መጠቀም ይችላሉ።
ደረጃ 2. በጊዜ ቁጥር ቅርጸት የጊዜ ነገርን ይፍጠሩ።
ቀኖችን ከማወዳደርዎ በፊት ቀደም ሲል ከተፈጠረው የቀን ነገር ረጅም ኢንቲጀር እሴት መፍጠር አለብዎት። እንደ እድል ሆኖ ፣ የ getTime () ዘዴ ለእርስዎ ያደርግልዎታል።
ረጅም ጊዜ 1 = getTime (date1); // የቀደመውን ጊዜ 1 ያውጁ 1 ረጅም ጊዜ 2 = getTime (ቀን 2); // የጥንታዊ ጊዜን 2 የቀን እሴት 2 ያውጁ
ደረጃ 3. ከማነፃፀር ያነሰ ያከናውኑ።
እነዚህን ሁለት ኢንቲጀር እሴቶች ለማወዳደር ከ (<) ያነሰ ኦፔራንድ ይጠቀሙ። ጊዜ 1 ከጊዜ 2 ያነሰ ስለሆነ ፣ የመጀመሪያው መልእክት ይመጣል። ሌላው ዓረፍተ ነገር አገባቡን ለማጠናቀቅ ተካትቷል።
ከሆነ (time1 <time2) {System.out.println ("date1 date from date2"); // ይታያል ምክንያቱም ጊዜ 1 <time2} ሌላ {System.out.println ("date1 ከ ቀን በፊት ቀን አይደለም 2"); }
ደረጃ 4. ከንጽጽር የበለጠ ያከናውኑ።
እነዚህን ሁለት ኢንቲጀር እሴቶች ለማወዳደር ከ (>) የሚበልጥ ኦፔራንድ ይጠቀሙ። ጊዜ 1 ከጊዜ 2 ስለሚበልጥ የመጀመሪያው መልእክት ይመጣል። ሌላው ዓረፍተ ነገር አገባቡን ለማጠናቀቅ ተካትቷል።
ከሆነ (time2> time1) {System.out.println ("date2 is date after date1"); // ይታያል ምክንያቱም time2> time1} ሌላ {System.out.println ("date2 date after date1"); }
ደረጃ 5. እኩል ንፅፅር ያካሂዱ።
እነዚህን ሁለት ኢንቲጀሮች ለማወዳደር የእሴቶችን እኩልነት (==) ለመፈተሽ የኦፔራንድ ተግባርን ይጠቀሙ። ጊዜ 1 ከጊዜ 3 ጋር እኩል ስለሆነ ፣ የመጀመሪያው መልእክት ይመጣል። የፕሮግራሙ ፍሰት ወደ ሌላ መግለጫ ከገባ ፣ ይህ ማለት ሁለቱ ጊዜያት አንድ ዓይነት እሴት የላቸውም ማለት ነው።
ከሆነ (time1 == time2) {System.out.println (“ሁለቱም ቀኖች አንድ ናቸው”); } ሌላ {System.out.println («1 ኛ ከ 2 ኛው ጋር አንድ አይደለም»); // ይታያል ምክንያቱም ጊዜ 1! = time2}