שימוש ב־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().
אתגר
קלצרו מתודה בשם processDateTime שמקבלת ארבעה ארגומנטים:
- מחרוזת (
dateTimeStr) בפורמט "yyyy-MM-dd HH:mm" - מספר שלם (
amount) שיש להוסיף או להחסיר - מחרוזת (
unit) שערכה הוא "hours", "days" או "months" - מחרוזת (
operation) שערכה הוא "add" או "subtract"
המתודה צריכה:
- לנתח את מחרוזת התאריך והשעה שהוזנה
- לבצע את הפעולה שצוינה
- להחזיר מידע מעוצב על התוצאה
ההודעות שיוחזרו צריכות להיות:
- אם הפורמט אינו תקין: להחזיר "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));
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכים4HashSet חלק 1
מהו HashSet?הוספת איברהסרת איברבדיקה אם איבר קייםבדיקת ריקנות וגודלניקוי ושכפולסיכום - HashSet10תאריך ושעה
יסודות LocalDateפעולות LocalTimeשימוש ב־LocalDateTimeתקופה ומשכי זמןעיצוב תאריכיםטיפול באזורי זמןתרגלו בעצמכם: קומפיילר Java אונליין