هناك العديد من الفصول المتعلقة مباشرة بالتاريخ في جافا. أكثرها استخدامًا هو التاريخ والتقويم تحت حزمة java.util. عندما تحتاج إلى استخدام التنسيق ، ستستخدم أيضًا java.text.simpleDateFormat.
بادئ ذي بدء ، اسمحوا لي أن أشتكي من أن هذا التاريخ والتقويم محرجان بعض الشيء للاستخدام. لم أكن على دراية به عندما استخدمته لأول مرة ، ولم أتمكن دائمًا من معرفة الاستخدام والاختلافات المحددة بين التاريخ والفئات التقويمية.
علاوة على ذلك ، فإن طريقة مجموعة فئة التقويم لديها بعض معاداة للإنسانية عند تحديد التواريخ. عند الإعداد الشهر ، يجب عليك دائمًا التعويض عن ذلك وطرح 1. على سبيل المثال ، إذا كنت ترغب في تعيينه على 6 يناير 2018 ، يجب عليك تعيينه على 2018 ، 0 ، 6 ، لأن يناير ممثل 0 هنا:
Calendar Cal = Calendar.getInstance () ؛ Cal.set (2018 ، 0 ، 8) ؛
لأسباب محددة ، يرجى الرجوع إلى الإجابة هنا: Stackoverflow: لماذا هو شهر يناير 0 في تقويم Java؟
على أي حال ، لا يمكنني تحمله. .
قبل بضعة أيام ، كان هناك شرط بسيط ، كان لحساب العمر بناءً على تاريخين. لقد راجعت الإنترنت وتخليت مباشرة عن الفصول الصعبة والتقويم واستخدمت مباشرة java.time.localdate. بدون مزيد من اللغط ، فقط قم بتحميل الكود:
استيراد java.time.localdate ؛ الطبقة العامة testlocaldate {public static void main (string [] args) {localdate date1 = localdate.of (2018 ، 1 ، 6) ؛ DateDate Date2 = localDate.of (1991 ، 1 ، 3) ؛ int age = date2.until (date1) .getyears () ؛ System.out.println ("أنت" + Age + "سنوات.") ؛ }}نتيجة الإخراج:
عمرك 27 سنة.
يتم التخلي عن مكالمات التحويل المتبادلة المعقدة والغامرة بين التاريخ والفئات التقويمية ، كما أن الكود واضح للغاية. أليس هذا ممتعا جدا؟
Java.Time هي مكتبة تاريخ ووقت تم تقديمها حديثًا في Java 8. الأساليب التالية كلها في حزمة Java.time.
دعونا نلقي نظرة على كيفية حساب هذا الرمز الفرق الزمني بطريقة بسيطة ومنعشة:
بادئ ذي بدء ، يعد LocalDate فئة ثابتة (فئة غير قابلة للتغيير) ، لذلك مثل فئة السلسلة ، لا تحتاج إلى استخدام كائن جديد جديد (؟)
ثم هناك الطريقة التي تستخدمها فئة LocalDate لتعيين التاريخ:
محلي ثابت للعام (int year ، month ، int dayofmonth) static static localdate of (int year ، int month ، int dayofmonth)
هناك ثلاث طرق محملة في المجموع ، اثنتان منها مدرجة هنا. فصل الشهر الأول هو نوع التعداد الذي يحتوي على اسم اللغة الإنجليزية للشهر ، مثل يناير ، نوفمبر ، إلخ.
والثاني هو الإعداد العادي للسنة والشهر واليوم. والخبر السار هو أن الشهر هنا يبدأ من 1 ، مما يعني أنك لم تعد بحاجة إلى طرح 1 يدويًا! ! !
فيما يلي الطريقة التي تستخدمها فئة LocalDate لمقارنة التواريخ:
فترة عامة حتى (Chronolocaldate endDateExclusive)
هذه الطريقة تُرجع كائن من الفترة.
تمثل الفترة فترة من الفواصل الزمنية التي تتشكل مثل "عامين ، 3 أشهر ، 4 أيام". تنتمي طريقة getyears التالية التي تسمى إلى فئة الفترة.
أخيرًا ، دعونا نلقي نظرة على بعض الطرق للحصول على فترات زمنية في فئة الفترة:
public int getyears () public int getMonths () public int getDays ()
يتم استخدام هذه الطرق الثلاثة للحصول على العام والشهر واليوم من الفاصل الزمني على التوالي. نعم ، الأمر بهذه البساطة.
لخص
ما سبق هو طريقة تنفيذ استخدام LocalDate لحساب العمر بناءً على التواريخ في Java التي قدمها المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فالرجاء ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب!