Period و Duration
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 57 من 59.
تمثل Period مقداراً من الوقت يعتمد على التاريخ (سنوات، شهور، أيام)، بينما تمثل Duration مقداراً يعتمد على الوقت (ساعات، دقائق، ثوانٍ).
إنشاء Period:
Period period = Period.of(1, 2, 15);
// سنة واحدة، وشهران، و15 يومًاإنشاء Duration:
Duration duration = Duration.ofHours(2);
// ساعتان
Duration minutes = Duration.ofMinutes(90);
// 90 دقيقةبعد تنفيذ الكود أعلاه، يحتوي period على:
P1Y2M15D // تنسيق ISO-8601التحدي
سهلأنشئ طريقة (method) باسم calculateDifference تأخذ أربع وسائط:
- سلسلة نصية String (
start) بالتنسيق "yyyy-MM-dd HH:mm" - سلسلة نصية String (
end) بالتنسيق "yyyy-MM-dd HH:mm" - سلسلة نصية String (
unit) إما "period" أو "duration" - سلسلة نصية String (
format) إما "full" أو "simple"
يجب أن تقوم الطريقة بما يلي:
- حساب الفرق بين تاريخي البداية والنهاية
- إرجاع الفرق بالتنسيق المحدد
يجب أن تكون رسائل الإرجاع كالتالي:
- إذا كانت التواريخ غير صالحة: أرجع "Invalid date format"
- إذا كانت الوحدة غير صالحة: أرجع "Invalid unit"
- إذا كان التنسيق غير صالح: أرجع "Invalid format"
- بالنسبة للفترة (period) بتنسيق "full": "Years: X, Months: Y, Days: Z"
- بالنسبة للفترة (period) بتنسيق "simple": "XyYmZd"
- بالنسبة للمدة (duration) بتنسيق "full": "Hours: X, Minutes: Y"
- بالنسبة للمدة (duration) بتنسيق "simple": "XhYm"
ورقة مرجعية
يمثل Period المقادير المستندة إلى التاريخ (سنوات، شهور، أيام)، بينما يمثل Duration المقادير المستندة إلى الوقت (ساعات، دقائق، ثوانٍ).
إنشاء Period:
Period period = Period.of(1, 2, 15);
// سنة واحدة، شهران، 15 يومًاإنشاء Duration:
Duration duration = Duration.ofHours(2);
// ساعتان
Duration minutes = Duration.ofMinutes(90);
// 90 دقيقةيستخدم Period تنسيق ISO-8601:
P1Y2M15D // سنة واحدة، شهران، 15 يومًاجرّب بنفسك
import java.util.Scanner;
import java.time.*;
import java.time.format.*;
public class Main {
public static String calculateDifference(String start, String end, String unit, String format) {
// اكتب كودك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String start = scanner.nextLine();
String end = scanner.nextLine();
String unit = scanner.nextLine();
String format = scanner.nextLine();
System.out.println(calculateDifference(start, end, unit, format));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات4HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمالمسح والنسخملخص - HashSet10التاريخ والوقت
أساسيات LocalDateعمليات LocalTimeاستخدام LocalDateTimePeriod و Durationتنسيق التاريخالتعامل مع المناطق الزمنية2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم