اذهب إلى المحتوى
  • 0

مشكلة في معالجة التاريخ في جافا

احمد صوالحة

السؤال

لدي الكود التالي:

public class Main {
    public static boolean calculateAge(LocalDate date) {
        LocalDate DateToday = LocalDate.now();
        Period period = Period.between(date, DateToday);
        int age = period.getYears();
        if (age>19){
            return true;
        }
        else{
            return false;
        }
    }  
    public static void main(String [] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter Date of Birth : dd-mm-yyyy");
        String dateEntered = sc.next();
        if(Pattern.matches("(0[1-9]|[12][0-9]|3[01])\\-(0[1-9]|[1][12])\\-([12][0-9][0-9][0-9])", dateEntered)){
            DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-mm-dd");
            LocalDate localDate= LocalDate.parse(dateEntered, dtf);
            calculateAge(localDate);
        }
        else{
            System.out.println("Wrong Date");
        }
    }
}

يحدث الخطأ التالي عند معالجة التاريخ المدخل من قبل المستخدم:

Exception in thread "main" java.time.format.DateTimeParseException: Text '03-09-1999' could not be parsed at index 0 at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2051) at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1953) at java.base/java.time.LocalDate.parse(LocalDate.java:429) at java.base/java.time.LocalDate.parse(LocalDate.java:414) at Main.main(Main.java:26)

ما هو سبب ظهور الخطأ ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

إذا كنت تريد كتابة التاريخ بهذا الشكل: 1999-09-03 عليك إستخدام الـ pattern هكذا:
d-M-yyyy وليس yyyy-mm-dd لأن mm تعني دقائق وليس أشهر، واليوم يستخدم بـ d واحدة فقط.

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d-M-yyyy");

لقد أرفقت صورة للـ Patterns وطريقة إستخدامها الصحيح.

patterns.PNG

تم التعديل في بواسطة إسلام عبدالعزيز
إضافة صورة للـ Patterns
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...