Java- ի ամսաթվերը համեմատելու տարբեր եղանակներ կան: Ներքինում ամսաթիվը ներկայացված է որպես ժամանակի (երկար) պահ `1970 -ի հունվարի 1 -ից անցած միլիվայրկյանների քանակը: Java- ում Ամսաթիվը օբյեկտ է, ինչը նշանակում է, որ այն ներառում է համեմատության բազմաթիվ մեթոդներ: Երկու ամսաթվերը համեմատելու ցանկացած մեթոդ էապես համեմատելու է ամսաթվերի ժամանակը:
Քայլեր
Մեթոդ 1 -ը 4 -ից ՝ համեմատության կիրառումը
Քայլ 1. Օգտագործեք compareTo:
Ամսաթիվը իրականացնում է Համեմատելի, ուստի երկու ամսաթվերը կարող են ուղղակիորեն համեմատվել համեմատության մեթոդի հետ: Եթե ամսաթվերը ժամանակի նույն կետի համար են, ապա մեթոդը վերադարձնում է զրո: Եթե համեմատվող ամսաթիվը ամսաթվի փաստարկից առաջ է, ապա զրոից փոքր արժեք է վերադարձվում: Եթե համեմատվող ամսաթիվը ամսաթվի փաստարկից հետո է, ապա զրոից մեծ արժեքը հետ է վերադարձվում: Եթե ամսաթվերը հավասար են, ապա 0 արժեքը վերադարձվում է:
Քայլ 2. Ստեղծեք ամսաթվի օբյեկտներ:
Նախքան դրանք համեմատելը սկսելը, ձեզ հարկավոր կլինի ստեղծել ամսաթվի յուրաքանչյուր օբյեկտ: Դա անելու եղանակներից մեկը SimpleDateFormat դասի օգտագործումն է: Այն թույլ է տալիս հեշտությամբ մուտքագրել ամսաթվի արժեքները ամսաթվի օբյեկտների մեջ:
SimpleDateFormat sdf = նոր SimpleDateFormat («yyyy-MM-dd»); // Նոր ամսաթվի օբյեկտներում արժեքներ հայտարարելու համար: ամսաթվերը ստեղծելիս օգտագործել նույն ամսաթվի ձևաչափը Date date1 = sdf.parse ("1995-02-23"); // ամսաթիվը ՝ 1995 թվականի փետրվարի 23-ը, ամսաթիվը ՝ 2 = sdf.parse («2001-10-31»); // date2 2001 թվականի հոկտեմբերի 31, ամսաթիվ 3, sdf.parse («1995-02-23»); // ամսաթիվ 3 -ը 1995 թվականի փետրվարի 23 -ն է
Քայլ 3. Համեմատեք ամսաթվի առարկաները:
Ստորև բերված ծածկագիրը ցույց կտա ձեզ յուրաքանչյուր դեպք `փոքրից, հավասարից և մեծից:
date1.compareTo (date2); // date1 <date2, վերադարձնում է 0 -ից պակաս date2.compareTo (date1); // date2> date1, վերադարձնում է ավելի քան 0 date1.compareTo (date3); // date1 = date3, այնպես որ 0 -ը կտպվի մխիթարելիս
Մեթոդ 2 4 -ից. Հավասարների օգտագործումը, հետո և առաջ
Քայլ 1. Օգտագործեք հավասարները ՝ հետո և առաջ:
Ամսաթվերը կարելի է համեմատել հավասարների հետ `մեթոդներից հետո և դրանից առաջ: Եթե երկու ամսաթվերը նույն ժամանակի համար են, ապա հավասարման մեթոդը կվերադառնա ճշմարիտ: Օրինակները կօգտագործեն համեմատած մեթոդի նախկինում ստեղծված ամսաթվերը:
Քայլ 2. Համեմատեք ՝ օգտագործելով նախորդ մեթոդը:
Ստորև բերված ծածկագիրը ցույց է տալիս իրական և կեղծ դեպք: Եթե date1- ը date2- ից առաջ է, ապա true վերադարձը: Եթե դա այդպես չէ, մինչ վերադարձը կեղծ է:
System.out.print (date1.before (date2)); // տպում է իսկական System.out.print (date2.before (date2)); // տպում է կեղծ
Քայլ 3. Համեմատեք ՝ օգտագործելով after մեթոդ:
Ստորև բերված ծածկագիրը ցույց է տալիս իրական և կեղծ դեպք: Եթե date2- ը date1- ից հետո է, ապա true վերադարձնելուց հետո: Եթե դա այդպես չէ, վերադարձից հետո կեղծ է:
System.out.print (date2.after (date1)); // prints true System.out.print (date1.after (date2)); // prints false
Քայլ 4. Համեմատեք ՝ օգտագործելով հավասարումների մեթոդը:
Ստորև բերված ծածկագիրը ցույց է տալիս իրական և կեղծ դեպք: Եթե ամսաթվերը հավասար են, ապա հավասարները վերադարձնում են ճշմարիտ: Եթե դրանք չլինեն, ապա հավասարները վերադարձնում են կեղծ:
System.out.print (date1.equals (date3)); // prints true System.out.print (date1.equals (date2)); // prints false
Մեթոդ 3 4 -ից ՝ Օրացույցի դասի օգտագործումը
Քայլ 1. Օգտագործեք օրացույցը:
Օրացույցային դասը ունի նաև համեմատման մեթոդներ, որոնք հավասար են, հետո և առաջ, որոնք աշխատում են նույն կերպ, ինչպես վերը նկարագրված է ամսաթվերի դասի համար: Այսպիսով, եթե ամսաթվի մասին տեղեկությունները պահվում են օրացույցում, ապա կարիք չկա ամսաթիվը հանել միայն համեմատություն կատարելու համար:
Քայլ 2. Ստեղծեք Օրացույցի օրինակներ:
Օրացույցի մեթոդներից օգտվելու համար ձեզ հարկավոր են Օրացույցի մի քանի օրինակ: Բարեբախտաբար, դուք կարող եք պարզապես վերցնել ժամանակներն արդեն ստեղծված Ամսաթվի դեպքերից:
Օրացույց cal1 = Calendar.getInstance (); // հայտարարում է cal1 Օրացույց cal2 = Calendar.getInstance (); // հայտարարում է cal2 Օրացույց cal3 = Calendar.getInstance (); // հայտարարում է cal3 cal1.setTime (ամսաթիվ 1); // կիրառում ամսաթիվը cal1 cal2.setTime (date2); cal3.setTime (ամսաթիվ 3);
Քայլ 3. Համեմատեք cal1- ի և cal2- ի օգտագործումը նախկինում:
Ստորև բերված ծածկագիրը պետք է տպվի ճշմարիտ, քանի որ cal1- ը Cal2- ից առաջ է:
System.out.print (cal1. առաջ (cal2)); // կտպվի ճշմարիտ
Քայլ 4. Համեմատեք cal1- ի և cal2- ի օգտագործումը after- ից հետո:
Ստորև բերված ծածկագիրը պետք է տպվի կեղծ, քանի որ cal1- ը cal2- ից առաջ է:
System.out.print (cal1.after (cal2)); // տպում է կեղծ
Քայլ 5. Համեմատեք cal1- ը և cal2- ը ՝ օգտագործելով հավասարներ:
Ստորև բերված ծածկագիրը ցույց կտա ինչպես իրական, այնպես էլ կեղծ գործի օրինակ: Վիճակը կախված է օրացուցային օրինակների համեմատությունից: Կոդը պետք է տպի «ճշմարիտ», այնուհետև «կեղծ» հաջորդ տողում:
System.out.println (cal1.equals (cal3)); // prints true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // տպում է false: cal1! = cal2
Մեթոդ 4 -ից 4 -ը ՝ օգտագործելով getTime
Քայլ 1. Օգտագործեք getTime- ը:
Հնարավոր է նաև ուղղակիորեն համեմատել երկու ամսաթվերի ժամանակային կետը, չնայած որ նախորդ մոտեցումներից որևէ մեկը, ամենայն հավանականությամբ, կլինի ավելի ընթեռնելի և այդքան նախընտրելի: Սա կլինի երկու պարզունակ տվյալների տիպի համեմատություն, այնպես որ դա կարելի է անել «» և «==»:
Քայլ 2. Ստեղծեք երկարաժամկետ օբյեկտներ:
Մինչև ամսաթվերը համեմատելը, դուք պետք է ստեղծեք երկար թվեր ՝ նախկինում ստեղծված Date օբյեկտների տվյալների հետ: Բարեբախտաբար, getTime () մեթոդը աշխատանքի մեծ մասը կանի ձեզ համար:
երկար ժամանակ 1 = getTime (ամսաթիվ 1); // հայտարարում է պարզունակ ժամանակ 1 օրվանից 1 երկար ժամանակ 2 = getTime (ամսաթիվ 2); // հայտարարում է պարզունակ ժամանակ 2 ամսաթվից 2
Քայլ 3. Կատարեք համեմատությունից ավելի քիչ:
Այս երկու ամբողջ արժեքները համեմատելու համար օգտագործեք ավելի քիչ խորհրդանիշ (<): Քանի որ time1- ը 2 -ից փոքր է, առաջին հաղորդագրությունը պետք է տպվի: Մնացած հայտարարությունը ներառված է պատշաճ շարահյուսության համար:
if (time1 <time2) {System.out.println ("date1 is before date2"); // տպվելու է ժամանակից 1 <time2} else {System.out.println ("date1 is not before date2"); }
Քայլ 4. Կատարեք ավելի մեծ համեմատություն:
Այս երկու ամբողջ արժեքները համեմատելու համար օգտագործեք մեծից մեծ նշանը (>): Քանի որ time1- ը 2 -ից մեծ է, առաջին հաղորդագրությունը պետք է տպվի: Մնացած հայտարարությունը ներառված է պատշաճ շարահյուսության համար:
if (time2> time1) {System.out.println ("date2 is after date1"); // տպվելու է time2> time1} else {System.out.println ("date2 is not after date1"); }
Քայլ 5. Կատարեք հավասար համեմատություն:
Օգտագործեք խորհրդանիշը ՝ հավասարությունը ստուգելու համար (==) ՝ հավասարության այս երկու ամբողջ թվերը համեմատելու համար: Քանի որ ժամանակը 1 հավասար է ժամանակին 3 -ին, առաջին հաղորդագրությունը պետք է տպվի: Եթե ծրագիրը հասնում է else հայտարարությանը, դա նշանակում է, որ ժամանակները հավասար չեն:
if (time1 == time2) {System.out.println («ամսաթվերը հավասար են»); } else {System.out.println («ամսաթվերը հավասար չեն»); // տպվելու է ժամանակից 1! = ժամանակ 2}