روشهای زیادی برای مقایسه دو تاریخ در زبان برنامه نویسی جاوا وجود دارد. در رایانه ها ، تاریخ با یک عدد (نوع داده Long) در واحد زمان نشان داده می شود - یعنی تعداد میلی ثانیه که از 1 ژانویه 1970 سپری شده است. در جاوا ، تاریخ یک شی است ، به این معنی که دارای چندین روش برای مقایسه هر روشی که برای مقایسه دو تاریخ استفاده می شود ، اساساً مقایسه واحدهای زمانی دو تاریخ است.
گام
روش 1 از 4: استفاده از compareTo
مرحله 1. از compareTo استفاده کنید
شیء Date Compareble را پیاده سازی می کند ، بنابراین می توان 2 تاریخ را مستقیماً با متد compareTo با یکدیگر مقایسه کرد. اگر هر دو تاریخ در واحدهای زمانی یکسان باشند ، روش صفر برمی گرداند. اگر تاریخ دوم کمتر از روز اول باشد ، مقدار کمتر از صفر بازگردانده می شود. اگر تاریخ دوم بزرگتر از اولین باشد ، متد مقدار بزرگتر از صفر را برمی گرداند. اگر هر دو تاریخ یکسان باشند ، متد مقدار null را برمی گرداند.
مرحله 2. چندین شیء Date ایجاد کنید
شما باید چندین شیء تاریخ را قبل از مقایسه ایجاد کنید. یکی از ساده ترین راه ها برای این کار استفاده از کلاس SimpleDateFormat است. این کلاس تبدیل مقدار تاریخ ورودی را به شیء تاریخ آسان می کند.
SimpleDateFormat sdf = جدید SimpleDateFormat ("yyyy-MM-dd"). برای اعلام مقدار در "تاریخ شی" جدید ، هنگام ایجاد تاریخ از همان قالب تاریخ استفاده کنید. تاریخ تاریخ 1 = sdf.parse ("1995-02-23")؛ // date1 23 فوریه 1995 تاریخ تاریخ 2 = sdf.parse ("2001-10-31") است ؛ // date2 31 اکتبر 2001 است تاریخ date3 = sdf.parse ("1995-02-23") ؛ // تاریخ 3 23 فوریه 1995 است
مرحله 3. اشیاء Date را مقایسه کنید
کد زیر نمونه هایی را برای هر مورد به شما نشان می دهد - کمتر از ، مساوی و بزرگتر از.
date1.compareTo (date2)؛ // date1 <date2 ، مقدار کمتر از 0 date2.compareTo (date1) را برمی گرداند ؛ // date2> date1 ، مقدار بیشتر از 0 date1.compareTo (date3) را برمی گرداند ؛ // date1 = date3 ، بنابراین 0 را در کنسول خروجی می دهد
روش 2 از 4: استفاده از مساوی ، بعد و قبل
مرحله 1. پس و قبل از مساوی استفاده کنید
خرما را می توان با استفاده از روشهای برابر ، بعد و قبل مقایسه کرد. اگر دو تاریخ دارای ارزش یکسانی در زمان باشند ، روش equals true برمی گردد. در مثال زیر از شیء Date ایجاد شده در متد compareTo استفاده خواهد شد.
مرحله 2. با روش قبل مقایسه کنید
کد زیر یک مورد نمونه را نشان می دهد که true و false را برمی گرداند. اگر date1 یک تاریخ قبل از date2 باشد ، متد before true برمی گردد. در غیر این صورت ، متد قبل false باز می گردد.
System.out.print (date1.before (date2))؛ // نمایش مقدار "true" System.out.print (date2.before (date2))؛ // مقدار "" false "را برگرداند
مرحله 3. با استفاده از روش after مقایسه کنید
کد زیر یک مورد نمونه را نشان می دهد که true و false را برمی گرداند. اگر date2 تاریخ بعد از date1 باشد ، متد after درست برمی گردد. در غیر این صورت ، متد after به صورت false برمی گردد.
System.out.print (date2.after (date1))؛ // نمایش مقدار "true" System.out.print (date1.after (date2))؛ // نمایش مقدار "false"
مرحله 4. با روش equals مقایسه کنید
کد زیر یک مورد نمونه را نشان می دهد که true و false را برمی گرداند. اگر هر دو تاریخ مساوی باشند ، روش equals true برمی گردد. در غیر این صورت ، متد equals false برمی گرداند.
System.out.print (date1.equals (date3))؛ // نمایش مقدار "true" System.out.print (date1.equals (date2))؛ // نمایش مقدار "false"
روش 3 از 4: استفاده از تقویم کلاس
مرحله 1. از تقویم کلاس استفاده کنید
کلاس تقویم همچنین دارای متدهای مقایسهTo ، مساوی ، بعد و قبل است که همانند روشهای قبلی در تاریخ عمل می کند. بنابراین اگر اطلاعات تاریخ در تقویم کلاس ذخیره می شود ، نیازی نیست تاریخ را فقط برای انجام مقایسه استخراج کنید.
مرحله 2. یک نمونه از تقویم ایجاد کنید
برای استفاده از روش ها در تقویم کلاس ، باید چندین نمونه تقویم ایجاد کنید. خوشبختانه ، می توانید از مقادیر نمونه تاریخ ایجاد شده استفاده کنید.
تقویم cal1 = Calendar.getInstance ()؛ // اعلام cal1 Calendar 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.before (cal2))؛ // مقدار "true" را برمی گرداند
مرحله 4. cal1 و cal2 را با استفاده از روش after مقایسه کنید
کد زیر نادرست باز می گردد زیرا cal1 تاریخ قبل از cal2 است.
System.out.print (cal1.after (cal2)) ؛ // مقدار "" false "را برگرداند
مرحله 5. cal1 و cal2 را با استفاده از روش برابر مقایسه کنید
کد زیر یک مورد نمونه را نشان می دهد که true و false را برمی گرداند. وضعیت بستگی به مقایسه تقویم دارد. کد زیر مقدار "true" و سپس "false" را در خط بعدی باز می گرداند.
System.out.println (cal1.equals (cal3)) ؛ // مقدار "" true "را برگرداند: cal1 == cal3 System.out.print (cal1.equals (cal2)) ؛ // مقدار "" false "را برگرداند: cal1! = cal2
روش 4 از 4: استفاده از getTime
مرحله 1. از getTime استفاده کنید
همچنین می توانید مقادیر واحد زمان دو تاریخ را مستقیماً مقایسه کنید ، اگرچه خواندن دو روش قبلی آسان تر و ترجیح داده می شود. به این ترتیب شما 2 نوع داده اولیه را مقایسه می کنید ، بنابراین می توانید از عملوندهای "" و "==" استفاده کنید.
مرحله 2. یک شی زمان در قالب شماره طولانی ایجاد کنید
قبل از اینکه بتوانید تاریخها را مقایسه کنید ، باید از شیء تاریخ ایجاد شده یک عدد صحیح طولانی ایجاد کنید. خوشبختانه ، متد () getTime این کار را برای شما انجام می دهد.
long time1 = getTime (date1) ؛ // اعلام زمان اولیه 1 از تاریخ 1 زمان طولانی 2 = getTime (تاریخ 2) ؛ // مقدار time2 اولیه date2 را اعلام کنید
مرحله 3. مقایسه ای کمتر از مقایسه انجام دهید
از عملوند کمتر از (<) برای مقایسه این دو مقدار صحیح استفاده کنید. از آنجا که time1 کمتر از time2 است ، اولین پیام ظاهر می شود. دستور else برای تکمیل نحو گنجانده شده است.
if (time1 <time2) {System.out.println ("date1 تاریخ قبل از date2 است") ؛ // نشان داده می شود زیرا time1 <time2} else {System.out.println ("date1 تاریخ قبل از date2 نیست") ؛ }
مرحله 4. یک مقایسه بزرگتر انجام دهید
از عملوند بزرگتر از (>) برای مقایسه این دو مقدار صحیح استفاده کنید. از آنجا که time1 بزرگتر از time2 است ، اولین پیام ظاهر می شود. دستور else برای تکمیل نحو گنجانده شده است.
if (time2> time1) {System.out.println ("date2 تاریخ بعد از تاریخ 1 است") ؛ // نشان داده می شود زیرا time2> time1} else {System.out.println ("date2 تاریخ بعد از تاریخ 1 نیست") ؛ }
مرحله 5. مقایسه ای برابر انجام دهید
برای مقایسه برابری مقادیر (==) از تابع عملوند برای مقایسه این دو عدد صحیح استفاده کنید. از آنجا که time1 برابر time3 است ، اولین پیام ظاهر می شود. اگر جریان برنامه به دستور else وارد شود ، به این معنی است که دو زمان یکسان نیستند.
if (time1 == time2) {System.out.println ("هر دو تاریخ یکسان هستند")؛ } else {System.out.println ("1 با 2 مشابه نیست")؛ // نشان داده می شود زیرا time1! = time2}