Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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
challenge icon

التحدي

سهل

أنشئ طريقة (method) باسم calculateDifference تأخذ أربع وسائط:

  1. سلسلة نصية String (start) بالتنسيق "yyyy-MM-dd HH:mm"
  2. سلسلة نصية String (end) بالتنسيق "yyyy-MM-dd HH:mm"
  3. سلسلة نصية String (unit) إما "period" أو "duration"
  4. سلسلة نصية String (format) إما "full" أو "simple"

يجب أن تقوم الطريقة بما يلي:

  1. حساب الفرق بين تاريخي البداية والنهاية
  2. إرجاع الفرق بالتنسيق المحدد

يجب أن تكون رسائل الإرجاع كالتالي:

  • إذا كانت التواريخ غير صالحة: أرجع "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));
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow

تدرّب بنفسك: مترجم Java عبر الإنترنت