قارن التواريخ في جافا

مؤلف: Roger Morrison
تاريخ الخلق: 24 شهر تسعة 2021
تاريخ التحديث: 1 تموز 2024
Anonim
Java #62 - How to compare two dates in Java
فيديو: Java #62 - How to compare two dates in Java

المحتوى

هناك عدة طرق لمقارنة التواريخ في جافا. داخليًا ، يتم تمثيل التاريخ كنقطة (طويلة) في الوقت - عدد المللي ثانية التي مرت منذ 1 يناير 1970. في Java ، التاريخ هو كائن التاريخ ، مما يعني أنه يحتوي على طرق متعددة لمقارنة التواريخ. أي طريقة لمقارنة تاريخين ستقارن أساسًا الوقت المنقضي لكلا التاريخين.

لتخطو

الطريقة 1 من 4: استخدام الأمر "CompareTo"

  1. استخدم CompareTo. يطبق التاريخ ComparableDate> وبالتالي يمكن مقارنة تاريخين مع بعضهما البعض مباشرةً باستخدام طريقة CompareTo. إذا كانت التواريخ تشير إلى نفس اللحظة في الوقت المناسب ، فستُرجع الطريقة صفرًا. إذا كان التاريخ الذي تتم مقارنته قبل وسيطة التاريخ ، فسيتم إرجاع قيمة سالبة. إذا كان التاريخ الذي تتم مقارنته في وقت لاحق من تاريخ وسيطة التاريخ ، فسيتم إرجاع قيمة موجبة. إذا كانت التواريخ هي نفسها ، فسيتم إرجاع صفر.
  2. قم بإنشاء كائنات التاريخ. سيتعين عليك إنشاء كل كائن تاريخ قبل أن تتمكن من البدء في مقارنتها. طريقة واحدة للقيام بذلك هي تطبيق فئة SimpleDateFormat. هذا يسمح لك بإدخال التواريخ بسهولة في كائنات التاريخ.

      SimpleDateFormat sdf = تنسيق SimpleDateFormat جديد ("yyyy-MM-dd") ؛ // للإعلان عن القيم في كائنات التاريخ الجديد.استخدم نفس تنسيق التاريخ عند إنشاء التواريخ Date1 = 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. استخدم يساوي ، بعد وبعد. يمكن مقارنة التواريخ ببعضها البعض باستخدام طرق التساوي ، وبعد ، وقبل. إذا كان تاريخان يشيران إلى نفس الوقت ، فسيعود التابع equals "صواب". تستخدم الأمثلة التواريخ التي تم إنشاؤها مسبقًا عبر طريقة المقارنة.
  2. قارن باستخدام الطريقة السابقة. يظهر الكود أدناه حالة الصواب والخطأ. إذا كان date1 أقدم من date2 ، تكون النتيجة صحيحة. إذا لم يكن كذلك ، قبل إرجاع خطأ.

      System.out.print (date1.before (date2)) ؛ // طباعة صحيح System.out.print (date2.before (date2)) ؛ // طباعة خطأ

  3. قارن هذا بالطريقة التالية. يظهر الكود أدناه حالة الصواب والخطأ. إذا كان التاريخ 2 بعد التاريخ 1 ، فعندئذٍ يعود بعد صحيح. إذا لم يكن كذلك ، بعد إرجاع خطأ.

      System.out.print (date2.after (date1)) ؛ // print true System.out.print (date1.after (date2)) ؛ // print false

  4. قارن باستخدام طريقة يساوي. يظهر الكود أدناه حالة الصواب والخطأ. إذا كانت التواريخ هي نفسها ، فإن يساوي إرجاع صحيح. إذا لم يكن الأمر كذلك ، فإن يساوي إرجاع خطأ.

      System.out.print (date1.equals (date3)) ؛ // print true System.out.print (date1.equals (date2)) ؛ // print false

الطريقة الثالثة من 4: استخدام فئة التقويم

  1. استخدم فئة التقويم. تحتوي فئة التقويم أيضًا على طرق المقارنة إلى ، ويساوي ، وبعد ، وقبل ، والتي تعمل بنفس الطريقة الموضحة أعلاه لفئة التاريخ. لذلك إذا تم الاحتفاظ ببيانات التاريخ في التقويم ، فلا داعي لاستخراج "التاريخ" ، فقط لمقارنة تاريخين.
  2. إنشاء مثيل من التقويم. لاستخدام طرق التقويم ، تحتاج إلى بعض حالات التقويم. لحسن الحظ ، يمكنك استخدام الوقت الذي تم إنشاؤه بواسطة مثيلات التاريخ.

      التقويم 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. قارن كال 1 و كال 2 باستخدام من قبل. الكود أدناه يعيد صحيحًا لأن cal1 أقدم من cal2.

      System.out.print (cal1.before (cal2)) ؛ // طباعة صحيح

  4. قارن كال 1 و كال 2 باستخدام بعد. يُرجع الكود أدناه خطأ ، لأن cal1 أقدم من cal2.

      System.out.print (cal1.after (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. إنشاء كائنات الوقت "الطويل". قبل أن تتمكن من مقارنة التواريخ ، يجب إنشاء أعداد صحيحة طويلة من بيانات كائنات التاريخ التي تم إنشاؤها مسبقًا. لحسن الحظ ، ستؤدي طريقة getTime () معظم العمل نيابةً عنك.

      long time1 = getTime (date1) ؛ // يعلن الوقت الأولي 1 من التاريخ 1 طويل الوقت 2 = getTime (التاريخ 2) ؛ // يعلن الوقت الأولي 2 من التاريخ 2

  3. استخدم معادلة "أقل من". استخدم رمز "أقل من" () لمقارنة هاتين القيمتين الصحيحتين. نظرًا لأن الوقت 1 أقل من الوقت 2 ، يجب طباعة الرسالة الأولى على الشاشة. يتم تضمين جملة else من أجل بناء الجملة الصحيح.

      if (time1 time2) {System.out.println ("date1 أقدم من date2") ؛ // print because time1 time2} else {System.out.println ("date1 متأخر أو يساوي date2") ؛ }

  4. قم بإجراء مقارنة "أكبر من". استخدم الرمز "أكبر من" (>) لمقارنة هذين العددين الصحيحين. نظرًا لأن time1 أكبر من time2 ، تتم طباعة الرسالة الأولى على الشاشة. يتم تضمين جملة else من أجل بناء الجملة الصحيح.

      if (time2> time1) {System.out.println ("date2 يأتي بعد date1") ؛ // print because time2> time1} else {System.out.println ("date2 أقدم من أو يساوي date1") ؛ }

  5. قم بإجراء مقارنة "مساوية". استخدم الرمز (==) للمقارنة بين هذين العددين. بما أن time1 يساوي time3 ، يجب طباعة الرسالة الأولى. إذا وصل البرنامج إلى عبارة else ، فهذا يعني أن الأوقات ليست هي نفسها.

      إذا (time1 == time2) {System.out.println ("التواريخ متساوية") ؛ } else {System.out.println ("التواريخ ليست متساوية")؛ // طباعة لأن time1! = time2}