التنسيق باستخدام DateTimeFormatter
حلّلوا التواريخ ونسّقوها
التنسيق باستخدام DateTimeFormatter درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
تحويل التواريخ إلى نص
تطبع toString الافتراضية للتاريخ تنسيق ISO. وللتحكم في المظهر أو لتحليل نص غير بتنسيق ISO، استخدموا DateTimeFormatter من الحزمة java.time.format.
نمط مخصص
أنشئوا مُنسِّقًا باستخدام ofPattern. وتمثّل الأحرف حقولًا: إذ تمثّل yyyy السنة، وMM الشهر، وdd اليوم.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
System.out.println(date.format(f));
}
}تنسيق الوقت
تستخدم أنماط الوقت HH للساعات بنظام 24 ساعة، وmm للدقائق، وss للثواني.
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(14, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(time.format(f));
}
}دمج التاريخ والوقت
يمكن أن يتضمن نمط واحد حقول التاريخ والوقت معًا لـ LocalDateTime.
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime dt = LocalDateTime.of(2026, 5, 30, 9, 45);
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
System.out.println(dt.format(f));
}
}أسماء الأشهر النصية
يغيّر تكرار حرف الشهر صيغته: فـ MM رقم، وMMM اسم مختصر مثل May، وMMMM الاسم الكامل.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH);
System.out.println(date.format(f));
}
}أسماء أيام الأسبوع
استخدموا EEEE للاسم الكامل ليوم الأسبوع، وEEE للصيغة المختصرة. مرّروا Locale لضمان لغة يمكن توقّعها.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("EEEE, dd MMM", Locale.ENGLISH);
System.out.println(date.format(f));
}
}نظام الساعة ذي الاثنتي عشرة ساعة
استخدموا hh بأحرف صغيرة للساعات بنظام 12 ساعة، وa لعلامة AM أو PM.
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(15, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);
System.out.println(time.format(f));
}
}التحليل باستخدام نمط
يحلّل المُنسِّق نفسه النص ويحوّله مرة أخرى إلى تاريخ. مرّروه بوصفه الوسيط الثاني إلى parse.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("30/05/2026", f);
System.out.println(date.getMonth());
}
}التعامل مع الإدخال غير الصالح
إذا لم يطابق النص النمط، فإن التحليل يرمي DateTimeParseException. ضعوا التحليل المعرّض للفشل داخل try-catch.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static void main(String[] args) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
try {
LocalDate.parse("not a date", f);
} catch (DateTimeParseException e) {
System.out.println("Invalid date format!");
}
}
}المنسِّقات المضمّنة
للاحتياجات الشائعة، يمكنكم تجاوز الأنماط واستخدام المنسِّقات المحددة مسبقًا مثل DateTimeFormatter.ISO_DATE.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.format(DateTimeFormatter.ISO_DATE));
}
}إعادة استخدام المنسِّقات
إن DateTimeFormatter غير قابل للتغيير وآمن للاستخدام مع الخيوط، لذا أنشئوه مرة واحدة وأعيدوا استخدامه. وقدّموا دائمًا Locale عند وجود أسماء للحفاظ على اتساق المخرجات.
اختبار سريع
اختبروا معرفتكم بتنسيق التواريخ والأوقات.
مراجعة
تعلّمتم تنسيق التاريخ والوقت:
- يحدّد
DateTimeFormatter.ofPatternالمخرجات المخصصة - تتطابق الأحرف مع الحقول:
yyyyوMMوddوHHوmm - يؤدي تكرار الأحرف مرات أكثر إلى صيغ نصية مثل
MMMMوEEEE - يحلّل المنسِّق نفسه النص، ويرمي
DateTimeParseExceptionعند الإدخال غير الصالح - المنسِّقات غير قابلة للتغيير وقابلة لإعادة الاستخدام؛ مرّروا
Localeعند وجود أسماء
الأسئلة الشائعة
هل درس «التنسيق باستخدام DateTimeFormatter» مجاني؟
نعم — نص درس «التنسيق باستخدام DateTimeFormatter» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «التنسيق باستخدام DateTimeFormatter»؟
حلّلوا التواريخ ونسّقوها تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «التنسيق باستخدام DateTimeFormatter»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- LocalDate وLocalTime وLocalDateTime
- Instant وDuration
- Period وحساب التواريخ
- التنسيق باستخدام DateTimeFormatter