עיצוב תאריכים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Java של Coddy. שיעור 58 מתוך 59.
DateTimeFormatter ב-Java מאפשר לך לעצב תאריכים ושעות בתבניות שונות. ניתן להשתמש בו עם LocalDate, LocalTime ו-LocalDateTime.
יוצרים מעצב עם תבנית מסוימת:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");עצבו תאריך באמצעות המפרמט:
LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);לאחר ביצוע הקוד שלמעלה, formatted מכיל:
2024-03-15
פענחו מחרוזת לתאריך:
String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);שני השלבים עלולים להיכשל. DateTimeFormatter.ofPattern() זורקת IllegalArgumentException כאשר התבנית עצמה אינה תקינה, למשל ofPattern("invalid"), מכיוון ש־i אינה אות תבנית. LocalDate.parse() זורקת DateTimeParseException כאשר הטקסט אינו תואם לתבנית או אינו תאריך אמיתי, למשל "2024-13-45". IllegalArgumentException נמצאת ב־java.lang, ולכן אין צורך לייבא אותה:
try {
DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
// הטקסט אינו תואם לתבנית
} catch (IllegalArgumentException e) {
// התבנית אינה תקינה
}אתגר
קלצרו מתודה בשם formatDate שמקבלת שלושה ארגומנטים:
- מחרוזת (
dateStr): התאריך, הכתוב בתבנית הקלט - מחרוזת (
inputPattern) תבנית תאריך הקלט - מחרוזת (
outputPattern) תבנית הפלט הרצויה
על המתודה:
- לנתח את תאריך הקלט באמצעות תבנית הקלט
- לעצב אותו באמצעות תבנית הפלט
- לטפל בתבניות האלה:
- "basic": "yyyy-MM-dd"
- "long": "MMMM d, yyyy"
- "short": "MM/dd/yy"
- "custom": מחרוזת התבנית בפועל
ההודעות שיוחזרו צריכות להיות:
- אם התאריך אינו תקין: להחזיר "Invalid date format"
- אם התבנית אינה תקינה: להחזיר "Invalid pattern"
- במקרה של הצלחה: להחזיר את התאריך המעוצב
נסו בעצמכם
import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static String formatDate(String dateStr, String inputPattern, String outputPattern) {
// כתבו את הקוד שלכם כאן
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String dateStr = scanner.nextLine();
String inputPattern = scanner.nextLine();
String outputPattern = scanner.nextLine();
System.out.println(formatDate(dateStr, inputPattern, outputPattern));
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכים4HashSet חלק 1
מהו HashSet?הוספת איברהסרת איברבדיקה אם איבר קייםבדיקת ריקנות וגודלניקוי ושכפולסיכום - HashSet10תאריך ושעה
יסודות LocalDateפעולות LocalTimeשימוש ב־LocalDateTimeתקופה ומשכי זמןעיצוב תאריכיםטיפול באזורי זמןתרגלו בעצמכם: קומפיילר Java אונליין