العمل مع التواريخ في Java: نظرة عامة على المكتبات والأدوات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع التواريخ في Java: نظرة عامة على المكتبات والأدوات



العمل مع التواريخ والوقت هي إحدى المهام الأكثر شيوعًا في التطوير باستخدام Java. لفترة طويلة، تسببت الفئات القياسية java.util.Date و java.util.Calendar في العديد من الانتقادات بسبب عدم بديهيتها، وقابليتها للتغيير، ومشاكل أمان الخيوط. لكن مع إصدار Java 8، تغير الوضع جذريًا. في هذه النظرة العامة، سنستعرض المكتبات الرئيسية للعمل مع التواريخ في Java، ونقاط قوتها، وأمثلة على استخدامها.



1. java.time (JSR-310) — واجهة برمجة التطبيقات القياسية



بدءًا من Java 8، أصبحت الحزمة java.time الأداة الرئيسية للعمل مع التواريخ والوقت. تم تطويرها تحت إشراف ستيفن كولبورن، مؤلف Joda-Time، واستوعبت أفضل الممارسات.



الفئات الرئيسية:

  • LocalDate — تاريخ بدون وقت (سنة، شهر، يوم).
  • LocalTime — وقت بدون تاريخ (ساعات، دقائق، ثوانٍ، نانو ثانية).
  • LocalDateTime — تاريخ ووقت بدون منطقة زمنية.
  • ZonedDateTime — تاريخ ووقت مع منطقة زمنية.
  • Instant — لحظة زمنية في UTC (تمثيل قابل للقراءة آليًا).
  • Duration و Period — للعمل مع الفترات الزمنية.


مثال على الاستخدام:



import java.time.*;import java.time.format.DateTimeFormatter;

public class JavaTimeExample { 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);

// العمل مع الوقت LocalTime now = LocalTime.now(); LocalTime meetingTime = LocalTime.of(14, 30); System.out.println("وقت الاجتماع: " + meetingTime);

// التنسيق DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); LocalDateTime event = LocalDateTime.of(2025, 12, 31, 23, 59); String formatted = event.format(formatter); System.out.println("منسق: " + formatted);

// الفرق بين التواريخ Period period = Period.between(today, specificDate); System.out.println("الأيام حتى 15 مارس: " + period.getDays()); }}


المزايا: مدمج في JDK، آمن للخيوط، كائنات غير قابلة للتغيير، واجهة برمجة تطبيقات غنية، دعم جميع المناطق الزمنية.



2. Joda-Time



قبل ظهور java.time، كانت Joda-Time هي المعيار الفعلي للعمل مع التواريخ في Java. اليوم، استخدامها مبرر فقط في المشاريع القديمة (قبل Java 8)، حيث يوصي المطورون بالترحيل إلى java.time.



مثال:



import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.LocalDate;

public class JodaTimeExample { public static void main(String[] args) { // التاريخ الحالي LocalDate today = LocalDate.now(); DateTime now = DateTime.now();

// الفرق بين التواريخ LocalDate start = new LocalDate(2025, 1, 1); LocalDate end = new LocalDate(2025, 12, 31); int days = Days.daysBetween(start, end).getDays(); System.out.println("الأيام بين: " + days); }}


العيوب: يتطلب تبعية خارجية، لا يتم تحديثه بنشاط، أقل في الوظائف مقارنة بـ java.time.



3. Apache Commons Lang 3



توفر المكتبة org.apache.commons.lang3.time أدوات مساعدة ملائمة للعمل مع التواريخ، خاصة للتنسيق والتحليل والحسابات.



الفئات الشائعة:

  • DateUtils — طرق لـ

توصيات