Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أساسيات LocalDate

جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 54 من 59.

يمثل LocalDate في Java تاريخاً بدون وقت أو منطقة زمنية. ويُستخدم للتعامل مع التواريخ مثل أعياد الميلاد، أو العطلات، أو الجداول الزمنية.

أنشئ تاريخ اليوم:

LocalDate today = LocalDate.now();

إنشاء تاريخ محدد:

LocalDate date = LocalDate.of(2024, 3, 15);

بعد تنفيذ الكود أعلاه، date يحتوي على: 2024-03-15

الحصول على أجزاء مختلفة من التاريخ:

LocalDate date = LocalDate.of(2024, 3, 15);
int year = date.getYear();      // 2024
int month = date.getMonthValue(); // 3
int day = date.getDayOfMonth();   // 15

تحليل تاريخ من سلسلة نصية (String):

LocalDate date = LocalDate.parse("2024-03-15");  // التنسيق: "yyyy-MM-dd"

هام: إذا كان تنسيق السلسلة النصية غير صالح، فإن parse() يرمي استثناءً من نوع DateTimeParseException. استخدم try-catch للتعامل مع هذا:

try {
    LocalDate date = LocalDate.parse("invalid-date");
} catch (DateTimeParseException e) {
    System.out.println("Invalid date format");
}

إضافة أو طرح الأيام:

LocalDate date = LocalDate.of(2024, 3, 15);
LocalDate future = date.plusDays(10);    // 2024-03-25
LocalDate past = date.minusDays(5);      // 2024-03-10

بعد تنفيذ الكود أعلاه:

  • future: 2024-03-25
  • past: 2024-03-10
challenge icon

التحدي

سهل

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

  1. سلسلة نصية (dateStr) بتنسيق "yyyy-MM-dd"
  2. عدد صحيح (days) للإضافة أو الطرح
  3. سلسلة نصية (operation) إما "add" أو "subtract"

يجب أن تقوم الطريقة بـ:

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

يجب أن تكون رسائل الإرجاع:

  • إذا كان تنسيق التاريخ غير صالح: أرجع "Invalid date format"
  • إذا كانت العملية غير صالحة: أرجع "Invalid operation"
  • في حالة النجاح: أرجع "Original: [date], New: [new_date], Day of week: [day_name]"

ورقة مرجعية

يمثل LocalDate تاريخاً بدون وقت أو منطقة زمنية في Java.

إنشاء تاريخ اليوم:

LocalDate today = LocalDate.now();

إنشاء تاريخ محدد:

LocalDate date = LocalDate.of(2024, 3, 15);

الحصول على أجزاء مختلفة من التاريخ:

LocalDate date = LocalDate.of(2024, 3, 15);
int year = date.getYear();      // 2024
int month = date.getMonthValue(); // 3
int day = date.getDayOfMonth();   // 15
String dayOfWeek = date.getDayOfWeek().toString();  // "FRIDAY"

تحليل تاريخ من سلسلة نصية (String):

LocalDate date = LocalDate.parse("2024-03-15");  // التنسيق: "yyyy-MM-dd"

إضافة أو طرح أيام:

LocalDate date = LocalDate.of(2024, 3, 15);
LocalDate future = date.plusDays(10);    // 2024-03-25
LocalDate past = date.minusDays(5);      // 2024-03-10

جرّب بنفسك

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

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

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

جميع دروس Logic & Flow