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

استخدام LocalDateTime

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

يجمع LocalDateTime في Java بين التاريخ والوقت. وهو مفيد عندما تحتاج إلى التعامل مع كلا المكوّنين، مثل جداول الفعاليات أو الطوابع الزمنية.

إنشاء التاريخ والوقت الحاليين

LocalDateTime now = LocalDateTime.now();

أنشئ تاريخًا ووقتًا محددين:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
// 2024-03-15 14:30

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

2024-03-15T14:30

نسّق التاريخ والوقت:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
String formatted = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));

حلّل تاريخًا ووقتًا من سلسلة نصية باستخدام النمط نفسه:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime parsed = LocalDateTime.parse("2024-03-15 14:30", formatter);  // 2024-03-15T14:30

بدون مُنسِّق، لا تقبل LocalDateTime.parse() إلا صيغة ISO ‏2024-03-15T14:30. السلسلة التي لا تطابق النمط تُطلق DateTimeParseException، لذا ضع الاستدعاء داخل try-catch كما فعلت مع LocalDate.parse().

challenge icon

التحدي

سهل

أنشئ أسلوبًا باسم processDateTime يأخذ أربع وسيطات:

  1. سلسلة نصية (dateTimeStr) بالتنسيق "yyyy-MM-dd HH:mm"
  2. عددًا صحيحًا (amount) للإضافة أو الطرح
  3. سلسلة نصية (unit) تكون إما "hours" أو "days" أو "months"
  4. سلسلة نصية (operation) تكون إما "add" أو "subtract"

ينبغي أن يقوم الأسلوب بما يلي:

  1. تحليل سلسلة التاريخ والوقت المُدخلة
  2. تنفيذ العملية المحددة
  3. إرجاع معلومات منسقة حول النتيجة

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

  • إذا كان التنسيق غير صالح: أعد "Invalid date time format"
  • إذا كانت الوحدة غير صالحة: أعد "Invalid unit"
  • إذا كانت العملية غير صالحة: أعد "Invalid operation"
  • عند النجاح: أعد "Original: [datetime], New: [new_datetime], Day: [day_name]"، مع كتابة التاريخين والوقتين بالتنسيق yyyy-MM-dd HH:mm، وكون [day_name] اسم يوم الأسبوع للتاريخ والوقت الجديد بأحرف كبيرة (مثل FRIDAY)

جرّب بنفسك

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

public class Main {
    public static String processDateTime(String dateTimeStr, int amount, String unit, String operation) {
        // اكتب الكود الخاص بك هنا
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateTimeStr = scanner.nextLine();
        int amount = Integer.parseInt(scanner.nextLine());
        String unit = scanner.nextLine();
        String operation = scanner.nextLine();
        
        System.out.println(processDateTime(dateTimeStr, amount, unit, operation));
    }
}
quiz iconاختبر نفسك

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

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

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