ما هذا ولماذا هو مطلوب؟
العمل مع التواريخ والوقت هو أحد أكثر المهام شيوعًا في البرمجة بلغة Java. توفر المكتبة القياسية java.time (التي تم تقديمها في Java 8) واجهة برمجة تطبيقات قوية وبديهية لمعالجة التواريخ والوقت والمناطق الزمنية والفترات. قبل Java 8، كان المطورون يستخدمون غالبًا المكتبة الخارجية Joda-Time، والتي أصبحت النموذج الأولي لـ java.time. تحل كلتا المكتبتين مشاكل java.util.Date و java.util.Calendar القديمة: أمان الخيوط، ثبات الكائنات، وطرق التنسيق المريحة.
كيفية التثبيت؟
java.time مدمج في Java 8 والإصدارات الأحدث — لا حاجة للتثبيت. بالنسبة لـ Joda-Time، أضف التبعية في Maven:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.12.5</version>
</dependency>بالنسبة لـ Gradle: implementation 'joda-time:joda-time:2.12.5'.
الوظائف الأساسية
- LocalDate, LocalTime, LocalDateTime — العمل مع التاريخ/الوقت بدون منطقة زمنية.
- ZonedDateTime, OffsetDateTime — مراعاة المناطق الزمنية.
- Period, Duration — الفرق بين التواريخ والوقت.
- DateTimeFormatter — تنسيق وتحليل مرن.
- Instant — لحظة زمنية في UTC.
مثال كود بلغة Java
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateExample {
public static void main(String[] args) {
// التاريخ الحالي
LocalDate today = LocalDate.now();
System.out.println("اليوم: " + today);
// إنشاء تاريخ محدد
LocalDate specificDate = LocalDate.of(2025, Month.MARCH, 15);
System.out.println("تاريخ محدد: " + specificDate);
// الفرق بين التواريخ
Period period = Period.between(specificDate, today);
System.out.println("الفرق: " + period.getYears() + " سنوات, " + period.getMonths() + " أشهر, " + period.getDays() + " أيام");
// التنسيق
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
String formatted = today.format(formatter);
System.out.println("منسق: " + formatted);
// تحليل سلسلة نصية
LocalDate parsed = LocalDate.parse("01.01.2024", formatter);
System.out.println("تم التحليل: " + parsed);
// العمل مع الوقت والمناطق
ZonedDateTime zoned = ZonedDateTime.now(ZoneId.of("Europe/Moscow"));
System.out.println("توقيت موسكو: " + zoned);
}
}متى تستخدم
java.time هو الخيار الرئيسي لجميع المشاريع الجديدة على Java 8+. استخدمه من أجل: حساب العمر، المواعيد النهائية، السجلات ذات الطوابع الزمنية، جدولة المهام، العمل مع التقويمات والمناطق الزمنية. Joda-Time مفيدة لدعم المشاريع القديمة أو إذا كنت بحاجة إلى وظائف إضافية، مثل Interval أو MutableDateTime. تعمل كلتا المكتبتين على تبسيط الكود بشكل كبير مقارنة بـ Calendar القديم.