logo

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

تحتوي حزم java.time وjava.util وjava.sql وjava.text على فئات لتمثيل التاريخ والوقت. تعتبر الفصول التالية مهمة للتعامل مع التاريخ في Java.

جافا 8 التاريخ / الوقت API

قدمت Java واجهة برمجة تطبيقات جديدة للتاريخ والوقت منذ Java 8. تحتوي حزمة java.time على فئات Java 8 للتاريخ والوقت.

واجهة برمجة تطبيقات التاريخ/الوقت الكلاسيكية

لكن Java Date API الكلاسيكية أو القديمة مفيدة أيضًا. دعونا نرى قائمة فئات التاريخ والوقت الكلاسيكية.

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

يمكننا تنسيق التاريخ والوقت في Java باستخدام الفئات التالية:

جافا التاريخ والوقت واجهات برمجة التطبيقات

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

فئات API التاريخ والوقت الكلاسيكية

كانت الفئات الأساسية قبل إصدار Java 8 هي:

مجموعة ديناميكية في جافا

Java.lang.النظام: توفر الفئة الأسلوب currentTimeMillis() الذي يُرجع الوقت الحالي بالمللي ثانية. يُظهر التاريخ والوقت الحاليين بالمللي ثانية بدءًا من 1 يناير 1970.

java.util.التاريخ: يتم استخدامه لإظهار لحظة زمنية محددة بوحدة المللي ثانية.

java.util.التقويم: إنها فئة مجردة توفر طرقًا للتحويل بين المثيلات ومعالجة حقول التقويم بطرق مختلفة.

java.text.SimpleDateFormat: إنها فئة تُستخدم لتنسيق التواريخ وتحليلها بطريقة محددة مسبقًا أو نمط محدد من قبل المستخدم.

java.util.TimeZone: وهو يمثل إزاحة المنطقة الزمنية، ويحدد أيضًا التوقيت الصيفي.

عيوب واجهات برمجة تطبيقات التاريخ/الوقت الحالية

    سلامة الموضوع:لا توفر الفئات الموجودة مثل التاريخ والتقويم أمانًا لسلسلة الرسائل. ومن ثم فإنه يؤدي إلى مشكلات التزامن التي يصعب تصحيحها والتي يجب على المطورين الاهتمام بها. توفر واجهات برمجة التطبيقات للتاريخ والوقت الجديدة في Java 8 أمانًا للسلسلة وهي غير قابلة للتغيير، وبالتالي تجنب مشكلة التزامن من المطورين.تصميم API سيء:لا توفر واجهات برمجة تطبيقات التاريخ والتقويم الكلاسيكية طرقًا لأداء الوظائف اليومية الأساسية. تتمحور فئات التاريخ والوقت المقدمة في Java 8 حول ISO وتوفر عددًا من الطرق المختلفة لتنفيذ العمليات فيما يتعلق بالتاريخ والوقت والمدة والفترات.صعوبة التعامل مع المنطقة الزمنية:من الصعب التعامل مع المنطقة الزمنية باستخدام فئات التاريخ والتقويم الكلاسيكية لأنه كان من المفترض أن يكتب المطورون المنطق الخاص بها. باستخدام واجهات برمجة التطبيقات الجديدة، يمكن إجراء معالجة المنطقة الزمنية بسهولة باستخدام واجهات برمجة التطبيقات المحلية وZonedDate/Time.

واجهة برمجة تطبيقات التاريخ والوقت الجديدة في Java 8

تساعد واجهة برمجة تطبيقات التاريخ الجديد في التغلب على العيوب المذكورة أعلاه مع الفئات القديمة. ويشمل الفئات التالية:

java.time.LocalDate: إنه يمثل سنة وشهرًا ويومًا في تقويم ISO وهو مفيد لتمثيل تاريخ بدون وقت. يمكن استخدامه لتمثيل معلومات التاريخ فقط مثل تاريخ الميلاد أو تاريخ الزفاف.

java.time.LocalTime: انها تتعامل في الوقت المناسب فقط. وهو مفيد لتمثيل الوقت البشري من اليوم، مثل أوقات الأفلام، أو أوقات فتح وإغلاق المكتبة المحلية.

java.time.LocalDateTime: يتعامل مع التاريخ والوقت، بدون منطقة زمنية. إنه مزيج من LocalDate مع LocalTime.

java.time.ZonedDateTime: فهو يجمع بين فئة LocalDateTime ومعلومات المنطقة الواردة في فئة ZoneId. إنه يمثل طابعًا زمنيًا كاملاً للتاريخ بالإضافة إلى معلومات المنطقة الزمنية.

java.time.OffsetTime: فهو يتعامل مع الوقت بإزاحة المنطقة الزمنية المقابلة من Greenwich/UTC، بدون معرف المنطقة الزمنية.

java.time.OffsetDateTime: فهو يتعامل مع التاريخ والوقت مع إزاحة المنطقة الزمنية المقابلة من Greenwich/UTC، بدون معرف المنطقة الزمنية.

جافا.تايم.الساعة: ويوفر الوصول إلى اللحظة الحالية والتاريخ والوقت في أي منطقة زمنية معينة. على الرغم من أن استخدام فئة الساعة اختياري، إلا أن هذه الميزة تسمح لنا باختبار التعليمات البرمجية الخاصة بك لمناطق زمنية أخرى، أو باستخدام ساعة ثابتة، حيث لا يتغير الوقت.

java.time.Instant : إنه يمثل بداية النانو ثانية على المخطط الزمني (منذ EPOCH) وهو مفيد لإنشاء طابع زمني لتمثيل وقت الآلة. اللحظة التي تحدث قبل العصر لها قيمة سالبة، واللحظة التي تحدث بعد العصر لها قيمة موجبة.

java.time.Duration : الفرق بين لحظتين ويتم قياسه بالثواني أو النانو ثانية ولا يستخدم بنيات تعتمد على التاريخ مثل السنوات والأشهر والأيام، على الرغم من أن الفصل يوفر طرقًا للتحويل إلى أيام وساعات ودقائق.

جافا.الوقت.الفترة: يتم استخدامه لتحديد الفرق بين التواريخ في القيم المستندة إلى التاريخ (السنوات والأشهر والأيام).

java.time.ZoneId : فهو ينص على معرف المنطقة الزمنية ويوفر قواعد للتحويل بين Instant و LocalDateTime.

java.time.ZoneOffset : وهو يصف إزاحة المنطقة الزمنية من توقيت غرينتش/التوقيت العالمي المنسق.

java.time.format.DateTimeFormatter : يأتي مع العديد من المنسقات المحددة مسبقًا، أو يمكننا تحديد التنسيق الخاص بنا. يحتوي على طريقة parse() أو format() لتحليل وتنسيق قيم التاريخ والوقت.