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"
جرّب بنفسك
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مطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكمتدرّب بنفسك: مترجم Java عبر الإنترنت