Menu
CoddyTech

שימוש ב־LocalDateTime

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Java של Coddy. שיעור 56 מתוך 59.

LocalDateTime ב-Java משלב גם תאריך וגם שעה. הוא שימושי כשצריך לעבוד עם שני הרכיבים, למשל בלוחות זמנים של אירועים או בחותמות זמן.

יצירת התאריך והשעה הנוכחיים

LocalDateTime now = LocalDateTime.now();

יצירת תאריך ושעה ספציפיים:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
// 2024-03-15 14:30

לאחר הפעלת הקוד שלמעלה, dateTime מכיל:

2024-03-15T14:30

עיצוב תאריך ושעה:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
String formatted = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));

נתח תאריך ושעה מתוך מחרוזת באמצעות אותה תבנית:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime parsed = LocalDateTime.parse("2024-03-15 14:30", formatter);  // 2024-03-15T14:30

ללא מעצב, LocalDateTime.parse() מקבלת רק את צורת ISO 2024-03-15T14:30. מחרוזת שאינה תואמת לתבנית גורמת ל-DateTimeParseException, לכן יש לעטוף את הקריאה ב-try-catch כפי שעשית עם LocalDate.parse().

challenge icon

אתגר

קל

צרו מתודה בשם processDateTime שמקבלת ארבעה ארגומנטים:

  1. מחרוזת ( dateTimeStr ) בפורמט "yyyy-MM-dd HH:mm"
  2. מספר שלם ( amount ) שיש להוסיף או להחסיר
  3. מחרוזת ( unit ) שערכה הוא "hours", "days" או "months"
  4. מחרוזת ( operation ) שערכה הוא "add" או "subtract"

המתודה צריכה:

  1. לנתח את מחרוזת התאריך והשעה שהוזנה
  2. לבצע את הפעולה שצוינה
  3. להחזיר מידע מעוצב על התוצאה

ההודעות שיוחזרו צריכות להיות:

  • אם הפורמט אינו תקין: להחזיר "Invalid date time format"
  • אם היחידה אינה תקינה: להחזיר "Invalid unit"
  • אם הפעולה אינה תקינה: להחזיר "Invalid operation"
  • במקרה של הצלחה: להחזיר "Original: [datetime], New: [new_datetime], Day: [day_name]", כאשר שני התאריכים והשעות כתובים בפורמט yyyy-MM-dd HH:mm, ו-[day_name] הוא היום בשבוע של התאריך והשעה החדשים, באותיות גדולות (לדוגמה, FRIDAY)

נסו בעצמכם

import java.util.Scanner;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class Main {
    public static String processDateTime(String dateTimeStr, int amount, String unit, String operation) {
        // כתבו את הקוד שלכם כאן
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateTimeStr = scanner.nextLine();
        int amount = Integer.parseInt(scanner.nextLine());
        String unit = scanner.nextLine();
        String operation = scanner.nextLine();
        
        System.out.println(processDateTime(dateTimeStr, amount, unit, operation));
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Java אונליין