خاصية التاريخ والوقت في جافا (Date and Time) تُستخدم للتعامل مع التواريخ والأوقات في البرامج. قبل Java 8، كانت الطريقة الرئيسية للتعامل مع التاريخ والوقت هي استخدام الكلاسين Date
و Calendar
. لكن هذه الطريقة كانت بها بعض المشاكل، مثل:
- قابلية التغيير (Mutability): كان الكلاس
Date
قابلًا للتغيير، مما قد يؤدي إلى أخطاء غير متوقعة. - تصميم غير بديهي: واجهة برمجة التطبيقات (API) كانت غير بديهية وصعبة الاستخدام في بعض الحالات.
- نقص دعم المناطق الزمنية: التعامل مع المناطق الزمنية كان معقدًا.
لحل هذه المشاكل، تم تقديم Java Date and Time API في Java 8 تحت حزمة java.time
. هذه API الجديدة توفر طريقة أكثر قوة ومرونة للتعامل مع التاريخ والوقت.
Java Date and Time API (java.time)
تتكون هذه API من عدة كلاسات رئيسية، من بينها:
- LocalDate: يمثل تاريخًا (سنة، شهر، يوم) بدون وقت أو منطقة زمنية. مثال: 2024-04-26.
- LocalTime: يمثل وقتًا (ساعة، دقيقة، ثانية، أجزاء من الثانية) بدون تاريخ أو منطقة زمنية. مثال: 10:30:00.
- LocalDateTime: يمثل تاريخًا ووقتًا معًا، بدون منطقة زمنية. مثال: 2024-04-26T10:30:00.
- ZonedDateTime: يمثل تاريخًا ووقتًا مع منطقة زمنية. هذا مهم للتعامل مع التواريخ والأوقات في مناطق زمنية مختلفة.
- Duration: يمثل فترة زمنية بين وقتين.
- Period: يمثل فترة زمنية بين تاريخين.
- DateTimeFormatter: يُستخدم لتنسيق وتحليل التواريخ والأوقات.
أمثلة:
الحصول على التاريخ والوقت الحاليين:
import java.time.LocalDate;import java.time.LocalTime;import java.time.LocalDateTime;import java.time.ZonedDateTime;import java.time.ZoneId;
public class DateTimeExample { public static void main(String[] args) { LocalDate today = LocalDate.now(); System.out.println("Today's date: " + today);
LocalTime now = LocalTime.now();
System.out.println("Current time: " + now);
LocalDateTime nowDateTime = LocalDateTime.now(); System.out.println("Current date and time: " + nowDateTime);
ZonedDateTime nowZoned = ZonedDateTime.now(ZoneId.of("Africa/Tunis")); // مثال على منطقة زمنية System.out.println("Current date and time in Tunis: "+nowZoned); }}
تنسيق التاريخ والوقت:
import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;
public class DateTimeFormatExample { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"); String formattedDateTime = now.format(formatter); System.out.println("Formatted date and time: " + formattedDateTime); }}
تحليل التاريخ من نص:
import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.time.format.DateTimeParseException;
public class DateTimeParseExample { public static void main(String[] args) { String dateString = "2024-04-26"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); try { LocalDate date = LocalDate.parse(dateString, formatter); System.out.println("Parsed date: " + date); } catch (DateTimeParseException e) { System.out.println("Error parsing date: " + e.getMessage()); } }}
هذه أمثلة بسيطة توضح كيفية استخدام Java Date and Time API. توفر هذه API العديد من الخيارات الأخرى للتعامل مع التواريخ والأوقات بطرق متقدمة، مثل العمليات الحسابية على التواريخ والأوقات، والتعامل مع المناطق الزمنية بشكل دقيق.
باستخدام java.time
API، أصبح التعامل مع التاريخ والوقت في جافا أكثر سهولة وفعالية.