Java sanalarini solishtirishning turli usullari mavjud. Ichkarida, sana (uzoq) nuqta sifatida ifodalanadi - 1970 yil 1 yanvardan beri o'tgan millisekundlar soni. Java -da Sana - bu ob'ekt, shuning uchun u solishtirishning bir qancha usullarini o'z ichiga oladi. Ikkita sanani solishtirishning har qanday usuli, asosan, sanalarning vaqtini taqqoslaydi.
Qadamlar
4 -chi 1 -usul: solishtirishTo -dan foydalanish
Qadam 1. comparTo dan foydalaning
Sana taqqoslanadigan va shuning uchun ikkita sanani to'g'ridan -to'g'ri solishtirish usuli bilan solishtirish mumkin. Agar sanalar bir vaqtning o'zida bo'lsa, usul nolni qaytaradi. Agar taqqoslanadigan sana sana argumentidan oldin bo'lsa, noldan kichik qiymat qaytariladi. Agar taqqoslanadigan sana sana argumentidan keyin bo'lsa, noldan katta qiymat qaytariladi. Agar sanalar teng bo'lsa, 0 qiymati qaytariladi.
Qadam 2. Sana ob'ektlarini yarating
Taqqoslashni boshlashdan oldin har bir sana ob'ektini yaratish kerak bo'ladi. Buning bir usuli - SimpleDateFormat sinfidan foydalanish. Bu sana qiymatlarini sana ob'ektlariga oson kiritish imkonini beradi.
SimpleDateFormat sdf = yangi SimpleDateFormat ("yyyy-MM-dd"); // Yangi sana ob'ektlarida qiymatlarni e'lon qilish uchun. sanalarni yaratishda bir xil sana formatidan foydalaning Date date1 = sdf.parse ("1995-02-23"); // sana1-1995 yil 23 fevral, sana sana2 = sdf.parse ("2001-10-31"); // sana2-2001 yil 31 oktyabr, sana sana3 = sdf.parse ("1995-02-23"); // sana3 - 1995 yil 23 fevral
Qadam 3. Sana ob'ektlarini solishtiring
Quyidagi kod sizga har bir holatni ko'rsatadi - kichik, teng va kattaroq.
sana1.compareTo (sana2); // sana1 <sana2, 0dan kam qaytaradi date2.compareTo (sana1); // sana2> sana1, 0 dan katta qaytaradi1 date1.compareTo (sana3); // sana1 = sana3, shuning uchun konsolga 0 bosiladi
4 -usul 2: Teng, keyin va oldindan foydalanish
Qadam 1. tenglikdan keyin ham, oldin ham ishlating
Xurmolarni teng usullar bilan solishtirish mumkin, keyin va undan oldingi usullar. Agar ikkita sana bir vaqtning o'zida bo'lsa, equals usuli to'g'ri bo'ladi. Misollar solishtirish usulidan oldin yaratilgan sanalarni ishlatadi.
Qadam 2. Avvalgi usul yordamida solishtiring
Quyidagi kod haqiqiy va noto'g'ri holatni ko'rsatadi. Agar sana1 sanadan 2 oldin bo'lsa, oldin rost qaytariladi. Agar bunday bo'lmasa, oldin false qaytariladi.
System.out.print (sana1.dan oldin (sana2)); // haqiqiy System.out.print (sana2.before (sana2)) ni chop etadi; // noto'g'ri yozadi
Qadam 3. After usuli yordamida solishtiring
Quyidagi kod haqiqiy va noto'g'ri holatni ko'rsatadi. Agar sana2 sana1dan keyin bo'lsa, keyin qaytariladi. Agar bunday bo'lmasa, "false" qaytarilgandan keyin.
System.out.print (sana2.dan keyin (sana1)); // haqiqiy System.out.print (sana1.dan keyin (sana2)); // noto'g'ri yozadi
4 -qadam. Equals usuli yordamida solishtiring
Quyidagi kod haqiqiy va noto'g'ri holatni ko'rsatadi. Agar sanalar teng bo'lsa, equals rostini qaytaradi. Agar ular bo'lmasa, equals noto'g'ri qaytaradi.
System.out.print (sana1. teng (sana3)); // haqiqiy tizimni chop etadi.
3 -usul 4: Taqvim sinfidan foydalanish
Qadam 1. Taqvimdan foydalaning
Taqvim sinfida, shuningdek, sana klassi uchun yuqorida ta'riflanganidek, xuddi shunday ishlaydigan, keyin va oldin taqqoslash usullari tengdir. Agar sana ma'lumoti taqvimda saqlansa, taqqoslash uchun sanani ajratib olishning hojati yo'q.
Qadam 2. Taqvim misollarini yarating
Taqvim usullaridan foydalanish uchun sizga bir nechta taqvim misollari kerak bo'ladi. Yaxshiyamki, siz allaqachon yaratilgan sana misollaridan vaqtni olishingiz mumkin.
Kalendar kal1 = Calendar.getInstance (); // e'lon qiladi cal1 Taqvim cal2 = Calendar.getInstance (); // e'lon qiladi cal2 Taqvim cal3 = Calendar.getInstance (); // cal3 ni e'lon qiladi cal1.setTime (sana1); // sana cal1 ga qo'llaniladi cal2.setTime (sana2); cal3.setTime (sana3);
Qadam 3. cal1 va cal2 ni avval ishlatib solishtiring
Quyidagi kod to'g'ri chop etilishi kerak, chunki cal1 cal2dan oldin.
System.out.print (cal1.before (cal2)); // to'g'ri chop etiladi
Qadam 4. cal1 va cal2 ni after yordamida solishtiring
Quyidagi kod noto'g'ri yozilishi kerak, chunki cal1 cal2dan oldin.
System.out.print (cal1.after (cal2)); // noto'g'ri yozadi
5 -qadam. Cal1 va cal2 ni tenglik yordamida solishtiring
Quyidagi kod haqiqiy va noto'g'ri holatlarning misolini ko'rsatadi. Vaziyat taqqoslanadigan taqvim misollariga bog'liq. Kod keyingi satrda "rost", keyin "noto'g'ri" yozishi kerak.
System.out.println (cal1.equals (cal3)); // to'g'ri chop etadi: cal1 == cal3 System.out.print (cal1.equals (cal2)); // noto'g'ri yozadi: cal1! = cal2
4 -usul 4: getTime -dan foydalanish
Qadam 1. getTime -dan foydalaning
Ikkita sananing vaqtini to'g'ridan -to'g'ri taqqoslash mumkin, garchi oldingi yondashuvlarning har biri o'qilishi mumkin va shuning uchun afzalroqdir. Bu ikkita ibtidoiy ma'lumot turini taqqoslash bo'ladi, shuning uchun uni "" va "==" yordamida bajarish mumkin.
2 -qadam. Uzoq muddatli ob'ektlarni yarating
Sanalarni taqqoslashdan oldin, avval yaratilgan sana ob'ektlari ma'lumotlari bilan uzun tamsayılarni yaratish kerak. Yaxshiyamki, getTime () usuli siz uchun ko'p ishlarni bajaradi.
uzoq vaqt1 = getTime (sana1); // ibtidoiy vaqtni e'lon qiladi1 kundan boshlab1 uzoq vaqt2 = getTime (sana2); // sana2 dan ibtidoiy vaqt2 ni e'lon qiladi
Qadam 3. Taqqoslashdan ko'ra kamroq ish qiling
Bu ikkita tamsayı qiymatini solishtirish uchun kamroq belgidan (<) foydalaning. Time1 vaqti 2dan kam bo'lgani uchun birinchi xabar chop etilishi kerak. Else iborasi to'g'ri sintaksis uchun kiritilgan.
if (vaqt1 <vaqt2) {System.out.println ("sana1 sanadan oldin 2"); // vaqtdan beri chop etiladi <vaqt2} boshqa {System.out.println ("sana1 sanadan oldin emas"); }
Qadam 4. Taqqoslashdan ko'ra kattaroq ishni bajaring
Bu ikkita tamsayı qiymatini solishtirish uchun katta belgidan (>) foydalaning. Time1 2 -vaqtdan katta bo'lgani uchun, birinchi xabar chop etilishi kerak. Else iborasi to'g'ri sintaksis uchun kiritilgan.
if (vaqt2> vaqt1) {System.out.println ("sana2 sanadan keyin 1"); // vaqtdan beri chop etiladi> vaqt1} boshqa {System.out.println ("sana2 sanadan keyin emas"); }
5 -qadam. Teng taqqoslashni qiling
Tenglik uchun bu ikki tamsayı qiymatni solishtirish uchun tenglikni tekshirish uchun belgidan foydalaning (==). Vaqt1 vaqt3 ga teng bo'lgani uchun, birinchi xabar chop etilishi kerak. Agar dastur else buyrug'iga kirsa, demak, vaqtlar teng emas.
if (time1 == time2) {System.out.println ("sanalar teng"); } else {System.out.println ("sanalar teng emas"); // 1 -vaqtdan boshlab chop etiladi! = vaqt2}