החבילות java.time, java.util, java.sql ו-java.text מכילות מחלקות לייצוג תאריך ושעה. השיעורים הבאים חשובים להתמודדות עם תאריך בג'אווה.
Java 8 תאריך/שעה API
Java הציגה ממשק API חדש לתאריך ושעה מאז Java 8. חבילת java.time מכילה מחלקות תאריך ושעה של Java 8.
- מחלקה java.time.LocalDate
- מחלקה java.time.LocalTime
- מחלקה java.time.LocalDateTime
- שיעור java.time.MonthDay
- מחלקת java.time.OffsetTime
- מחלקה java.time.OffsetDateTime
- כיתה java.time.Clock
- מחלקה java.time.ZonedDateTime
- מחלקה java.time.ZoneId
- מחלקה java.time.ZoneOffset
- כיתה java.time.Year
- כיתה java.time.YearMonth
- java.time.Period class
- java.time.Duration שיעור
- כיתה java.time.Instant
- קובץ java.time.DayOfWeek
- Java.time.Month enum
API קלאסי של תאריך/שעה
אבל גם Java Date API קלאסי או ישן שימושי. בואו לראות את רשימת שיעורי התאריך והשעה הקלאסיים.
- כיתה java.util.Date
- java.sql.Date class
- מחלקה java.util.Calendar
- כיתה java.util.Gregorian Calendar
- מחלקה java.util.TimeZone
- מחלקת java.sql.Time
- מחלקה java.sql.Timestamp
עיצוב תאריך ושעה
אנו יכולים לעצב תאריך ושעה ב-Java באמצעות המחלקות הבאות:
ממשקי API של Java תאריך ושעה
Java מספקת את פונקציונליות התאריך והשעה בעזרת שתי חבילות java.time ו-java.util. החבילה java.time מוצגת ב-Java 8, והמחלקות החדשות שהוצגו מנסות להתגבר על החסרונות של מחלקות הדור הקודם java.util.Date ו-java.util.Calendar.
שיעורי API קלאסיים של תאריך שעה
המחלקות העיקריות לפני שחרור Java 8 היו:
רשימה בלתי ניתנת לשינוי
Java.lang.System: המחלקה מספקת את שיטת currentTimeMillis() המחזירה את הזמן הנוכחי באלפיות שניות. הוא מציג את התאריך והשעה הנוכחיים באלפיות שניות מה-1 בינואר 1970.
java.util.Date: הוא משמש להצגת רגע ספציפי של זמן, עם יחידת אלפיות השנייה.
java.util.Calendar: זוהי מחלקה אבסטרקטית המספקת שיטות להמרה בין מופעים ומניפולציה של שדות לוח השנה בדרכים שונות.
java.text.SimpleDateFormat: זוהי מחלקה המשמשת לעיצוב ולנתח התאריכים בצורה מוגדרת מראש או דפוס מוגדר על ידי משתמש.
java.util.TimeZone: זה מייצג היסט של אזור זמן, וגם מגלה את שעון הקיץ.
חסרונות של ממשקי API קיימים של תאריך/שעה
API חדש של תאריך ושעה ב-Java 8
ה-API החדש של תאריך עוזר להתגבר על החסרונות שהוזכרו לעיל עם המחלקות מדור קודם. הוא כולל את השיעורים הבאים:
java.time.LocalDate: הוא מייצג יום-שנה-חודש בלוח השנה של ISO והוא שימושי לייצוג תאריך ללא זמן. ניתן להשתמש בו כדי לייצג מידע על תאריך בלבד, כגון תאריך לידה או תאריך חתונה.
java.time.LocalTime: זה עוסק בזמן בלבד. זה שימושי לייצוג השעה המבוססת על אדם ביום, כגון זמני סרטים, או זמני הפתיחה והסגירה של הספרייה המקומית.
java.time.LocalDateTime: הוא מטפל גם בתאריך וגם בשעה, ללא אזור זמן. זהו שילוב של LocalDate עם LocalTime.
java.time.ZonedDateTime: הוא משלב את המחלקה LocalDateTime עם מידע האזור שניתן במחלקה ZoneId. זה מייצג חותמת זמן מלאה של תאריך יחד עם מידע על אזור זמן.
java.time.OffsetTime: הוא מטפל בזמן עם היסט אזור זמן מתאים מגריניץ'/UTC, ללא מזהה אזור זמן.
java.time.OffsetDateTime: הוא מטפל בתאריך ושעה עם היסט אזור זמן מתאים מגריניץ'/UTC, ללא מזהה אזור זמן.
java.time.Clock : הוא מספק גישה לרגע הנוכחי, לתאריך ולשעה בכל אזור זמן נתון. למרות שהשימוש במחלקת השעון הוא אופציונלי, תכונה זו מאפשרת לנו לבדוק את הקוד שלך עבור אזורי זמן אחרים, או באמצעות שעון קבוע, שבו הזמן אינו משתנה.
java.time.Instant : הוא מייצג את ההתחלה של ננו-שנייה על ציר הזמן (מאז EPOCH) ושימושי ליצירת חותמת זמן לייצוג זמן מכונה. לרגע המתרחש לפני העידן יש ערך שלילי, ולרגע המתרחש אחרי העידן יש ערך חיובי.
java.time.Duration : הבדל בין שני רגעים ונמדד בשניות או ננו-שניות ואינו משתמש במבנים מבוססי תאריך כגון שנים, חודשים וימים, אם כי המחלקה מספקת שיטות הממירות לימים, שעות ודקות.
java.time.Period : הוא משמש להגדרת ההבדל בין תאריכים בערכים מבוססי תאריך (שנים, חודשים, ימים).
java.time.ZoneId : הוא מציין מזהה אזור זמן ומספק כללים להמרה בין Instant ל-LocalDateTime.
java.time.ZoneOffset : זה מתאר היסט של אזור זמן משעון גריניץ'/UTC.
java.time.format.DateTimeFormatter : זה מגיע עם פורמטים מוגדרים מראש שונים, או שאנחנו יכולים להגדיר משלנו. יש לו שיטת parse() או format() לניתוח ועיצוב ערכי התאריך והשעה.