المسارات
/
Java
Java
/
المنهج
/
التاريخ والوقت
ال

التاريخ والوقت في Java

6 تمارين

نبذة عن التاريخ والوقت

تحتوي حزمة java.time التي أُدخلت في Java 8 على عدة أصناف للتعامل مع التواريخ والوقت.

LocalDate

يمثّل الصنف java.time.LocalDate تاريخًا بدون منطقة زمنية في تقويم ISO-8601، مثل 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

يمكن مقارنة التواريخ بتواريخ أخرى:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

تحتوي نسخة LocalDate على طرق لاسترجاع أجزاء الوقت منها:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

تحتوي نسخة LocalDate على طرق لإضافة وحدات زمنية إليها.

Note

تُرجع هذه الطرق نسخة LocalDate جديدة ولا تُحدّث النسخة الموجودة، لأن صنف LocalDate غير قابل للتغيير.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

يمثّل الصنف java.time.LocalDateTime تاريخًا ووقتًا بدون منطقة زمنية في تقويم ISO-8601، مثل 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

وكما هو الحال مع صنف LocalDate، تحتوي نسخة LocalDateTime على الطرق نفسها للمقارنة مع نسخ LocalDateTime أخرى وإضافة وحدات زمنية إليها.

ومن الممكن أيضًا تحويل نسخة LocalDate إلى LocalDateTime:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

تنسيق التواريخ والأوقات

يستخدم كلٌّ من LocalDate وLocalDateTime الصيغة القياسية ISO-8601 عند التحويل من String وإلى String.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

لا يمكن محاولة تحليل LocalDate أو LocalDateTime من String بهذه الطريقة باستخدام صيغة مختلفة. بدلًا من ذلك، لتنسيق التواريخ باستخدام صيغة مخصّصة، ينبغي لك استخدام java.time.format.DateTimeFormatter:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

يمكنك أيضًا تحديد لغة المنطقة عند إنشاء الصيغة المخصّصة للتنسيق والتحليل باختلاف المناطق:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم التاريخ والوقت