Menu
CoddyTech
flag Ar iconالعربيةdown icon

تنسيق التاريخ

جزء من قسم المنطق وتدفق التنفيذ في رحلة Java على Coddy. الدرس 58 من 59.

يتيح لك DateTimeFormatter في Java تنسيق التواريخ والأوقات بأنماط مختلفة. ويمكن استخدامه مع LocalDate وLocalTime وLocalDateTime.

أنشئ مُنسِّقًا بنمط محدد:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

نسّق تاريخًا باستخدام المُنسِّق:

LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);

بعد تنفيذ الشيفرة أعلاه، يحتوي formatted على:

2024-03-15

حلّل سلسلة نصية إلى تاريخ:

String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);

يمكن أن تفشل كلتا الخطوتين. ترمي DateTimeFormatter.ofPattern() استثناء IllegalArgumentException عندما يكون النمط نفسه غير صالح، مثل ofPattern("invalid")، لأن i ليس حرفًا من أحرف النمط. وترمي LocalDate.parse() استثناء DateTimeParseException عندما لا يطابق النص النمط أو لا يمثل تاريخًا حقيقيًا، مثل "2024-13-45". يقع IllegalArgumentException ضمن java.lang، لذا لا يحتاج إلى استيراد:

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // النص لا يطابق النمط
} catch (IllegalArgumentException e) {
    // النمط غير صالح
}
challenge icon

التحدي

سهل

أنشئ طريقة باسم formatDate تأخذ ثلاث وسيطات:

  1. قيمة من النوع String (dateStr): التاريخ، مكتوبًا وفق نمط الإدخال
  2. قيمة من النوع String (inputPattern): نمط تاريخ الإدخال
  3. قيمة من النوع String (outputPattern): نمط الإخراج المطلوب

ينبغي للطريقة أن:

  1. تحلّل تاريخ الإدخال باستخدام نمط الإدخال
  2. تنسّقه باستخدام نمط الإخراج
  3. تتعامل مع هذه الأنماط:
    • "basic": "yyyy-MM-dd"
    • "long": "MMMM d, yyyy"
    • "short": "MM/dd/yy"
    • "custom": سلسلة النمط الفعلية

ينبغي أن تكون الرسائل المُعادة كما يلي:

  • إذا كان التاريخ غير صالح: أعد "Invalid date format"
  • إذا كان النمط غير صالح: أعد "Invalid pattern"
  • عند النجاح: أعد التاريخ المنسّق

جرّب بنفسك

import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class Main {
    public static String formatDate(String dateStr, String inputPattern, String outputPattern) {
        // اكتب الكود الخاص بك هنا
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateStr = scanner.nextLine();
        String inputPattern = scanner.nextLine();
        String outputPattern = scanner.nextLine();
        
        System.out.println(formatDate(dateStr, inputPattern, outputPattern));
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Java عبر الإنترنت