توجد طرق عديدة لمقارنة تاريخين في لغة برمجة Java. في أجهزة الكمبيوتر ، يتم تمثيل التاريخ برقم (نوع البيانات طويل) بوحدات زمنية - أي عدد المللي ثانية التي انقضت منذ 1 يناير 1970. في جافا ، التاريخ هو كائن ، مما يعني أنه يحتوي عدة طرق لإجراء المقارنات. أي طريقة مستخدمة لمقارنة تاريخين هي في الأساس مقارنة الوحدات الزمنية للتاريخين.
خطوة
طريقة 1 من 4: استخدام CompareTo
الخطوة 1. استخدم المقارنة
يطبق كائن التاريخ "المقارنة" بحيث يمكن مقارنة تاريخين مع بعضهما البعض مباشرةً باستخدام طريقة "" مقارنة. إذا كان كلا التاريخين لهما نفس الرقم في الوحدات الزمنية ، فإن الطريقة ترجع صفرًا. إذا كان التاريخ الثاني أقل من الأول ، يتم إرجاع قيمة أقل من الصفر. إذا كان التاريخ الثاني أكبر من الأول ، تُرجع الطريقة قيمة أكبر من الصفر. إذا كان كلا التاريخين متطابقين ، فستُرجع الطريقة قيمة فارغة.
الخطوة 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 تاريخ التاريخ 3 = 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.before (date2)) ؛ // اعرض القيمة '' true '' System.out.print (date2.before (date2)) ؛ // إرجاع القيمة "خطأ"
الخطوة 3. قارن باستخدام طريقة after
يُظهر الكود التالي مثالاً لحالة تُرجع صواب وخطأ. إذا كان تاريخ 2 هو التاريخ بعد التاريخ 1 ، فإن الطريقة التالية ترجع صحيحًا. خلاف ذلك ، فإن طريقة after سيعود خطأ.
System.out.print (date2.after (date1)) ؛ // اعرض القيمة '' true '' System.out.print (date1.after (date2)) ؛ // اعرض القيمة '' false ''
الخطوة 4. قارن مع طريقة يساوي
يُظهر الكود التالي مثالاً لحالة تُرجع صواب وخطأ. إذا كان كلا التاريخين متساويين ، فإن طريقة equals ترجع صحيحًا. خلاف ذلك ، فإن طريقة يساوي يعيد خطأ.
System.out.print (date1.equals (date3)) ؛ // اعرض القيمة '' true '' System.out.print (date1.equals (date2)) ؛ // اعرض القيمة '' false ''
الطريقة الثالثة من 4: استخدام تقويم الفصل الدراسي
الخطوة 1. استخدم تقويم الفصل
تحتوي فئة التقويم أيضًا على طرق مقارنة إلى ، ويساوي ، وبعد ، وقبل والتي تعمل بنفس الطرق الموضحة سابقًا لفئة التاريخ. لذلك إذا تم تخزين معلومات التاريخ في تقويم الفصل الدراسي ، فلن تحتاج إلى استخراج التاريخ فقط لإجراء مقارنة.
الخطوة 2. إنشاء مثيل من التقويم
لاستخدام أساليب في Class Calendar ، يجب عليك إنشاء العديد من مثيلات التقويم. لحسن الحظ ، يمكنك استخدام القيم من مثيل تاريخ تم إنشاؤه مسبقًا.
التقويم cal1 = Calendar.getInstance () ؛ // أعلن cal1 Calendar cal2 = Calendar.getInstance () ؛ // أعلن cal2 Calendar cal3 = Calendar.getInstance () ؛ // أعلن cal3 cal1.setTime (date1) ؛ // ضع التاريخ في cal1 cal2.setTime (date2) ؛ cal3.setTime (date3) ،
الخطوة 3. قارن cal1 و cal2 باستخدام الطريقة السابقة
الكود التالي سيخرج قيمة tr
System.out.print (cal1.before (cal2)) ؛ // سيعيد القيمة "صواب"
الخطوة 4. قارن cal1 و cal2 باستخدام طريقة after
ستُرجع الشفرة التالية خطأ لأن cal1 هو التاريخ قبل cal2.
System.out.print (cal1.after (cal2)) ؛ // إرجاع القيمة "خطأ"
الخطوة 5. قارن cal1 و cal2 باستخدام طريقة equals
سيُظهر الكود التالي مثالًا لحالة تُرجع صوابًا وخطأ. تعتمد الحالة على مثيل التقويم الذي تتم مقارنته. ستُرجع الشفرة التالية القيمة "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. قم بإنشاء كائن وقت بتنسيق الأرقام الطويلة
قبل أن تتمكن من مقارنة التواريخ ، يجب عليك إنشاء قيمة عدد صحيح طويل من كائن التاريخ الذي تم إنشاؤه مسبقًا. لحسن الحظ ، فإن طريقة getTime () ستفعل ذلك من أجلك.
long time1 = getTime (date1) ؛ // أعلن عن الوقت الأولي 1 من التاريخ 1 طويل الوقت 2 = getTime (التاريخ 2) ؛ // يعلن عن قيمة الوقت البدائي 2 للتاريخ 2
الخطوة 3. قم بإجراء مقارنة أقل من
استخدم المعامل أقل من (<) لمقارنة هاتين القيمتين الصحيحتين. نظرًا لأن time1 أقل من time2 ، ستظهر الرسالة الأولى. يتم تضمين عبارة else لإكمال بناء الجملة.
if (time1 <time2) {System.out.println ("date1 هو التاريخ قبل date2") ؛ // سيظهر لأن time1 <time2} else {System.out.println ("التاريخ 1 ليس تاريخًا قبل التاريخ 2") ؛ }
الخطوة 4. قم بإجراء أكبر من المقارنة
استخدم المعامل الأكبر من (>) لمقارنة هاتين القيمتين الصحيحتين. لأن الوقت 1 أكبر من الوقت 2 ، ستظهر الرسالة الأولى. يتم تضمين عبارة 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 ("الأول ليس هو الثاني")؛ // سيظهر لأن time1! = time2}