המר בין מחרוזת לחותמת זמן
1. סקירה כללית
חותמת זמן הוא אחד מכמה חפצי תאריך שעה מדור קודם ב- Java.
במדריך זה נראה כיצד לנתח מ- חוּט ערך ל- a חותמת זמן אובייקט וכיצד לעצב א חותמת זמן התנגדות ל חוּט.
ומאז חותמת זמן מסתמך על פורמט קנייני של Java, נראה כיצד להסתגל בצורה יעילה.
2. לנתח א חוּט אל א חותמת זמן
2.1. פורמט סטנדרטי
הדרך הפשוטה ביותר לנתח א חוּט אל א חותמת זמן זה זה ערך של שיטה:
Timestamp.valueOf ("2018-11-12 01: 02: 03.123456789")
וכאשר שלנו חוּט הוא בפורמט חותמת זמן של JDBC - yyyy-m [m] -d [d] hh: mm:ss[.f ...] - אז זה די פשוט.
אנו יכולים לפרש דפוס זה כך:
תבנית | תיאור | דוגמא |
---|---|---|
כן | מייצג את השנה, וחובה שיהיו עליה ארבע ספרות. | 2018 |
מ '[מ'] | עבור רכיב החודש, חייבת להיות לנו ספרה אחת או שתיים (מ -1 עד 12). | 1, 11 |
ד [ד] | עבור ערך יום החודש, חייבת להיות לנו ספרה אחת או שתיים (מ -1 עד 31). | 7, 12 |
חח | עומד לשעת היום, עם ערכים מותרים בין 0 ל -23. | 01, 16 |
מ"מ | עומד למשך דקות מהשעה, עם ערכים מותרים בין 0 ל -59. | 02, 45 |
ss | עומד לשניות בדקה, עם ערכים מותרים בין 0 ל -59. | 03, 52 |
[.f ...] | מייצג שברירי שנייה אופציונליים, יכול להיות עד דיוק ננו-שניות כך שהערכים המותרים הם בין 0 ל -9999999999. | 12, 1567, 123456789 |
2.2. פורמטים חלופיים
עכשיו, אם זה לא בפורמט חותמת זמן JDBC, אז למרבה המזל, ערך של לוקח גם א LocalDateTime למשל.
זה אומר שאנחנו יכולים לקחת תאריך בכל פורמט, אנחנו רק צריכים להמיר אותו לראשונה ל- LocalDateTime:
דפוס מחרוזת = "MMM dd, yyyy HH: mm: ss.SSSSSSSS"; TimestampAsString = "מחרוזת 12 בנובמבר 2018 13: 02: 56.12345678"; מעצב DateTimeFormatter = DateTimeFormatter.ofPattern (תבנית); LocalDateTime localDateTime = LocalDateTime.from (formatter.parse (timestampAsString));
ואז נוכל להשתמש ערך של עשינו קודם:
חותמת זמן חותמת זמן = Timestamp.valueOf (localDateTime); assertEquals ("2018-11-12 13: 02: 56.12345678", timestamp.toString ());
שים לב במעבר זה, בניגוד ל- תַאֲרִיך חפץ, א חותמת זמן האובייקט מסוגל לאחסן שברירי שנייה.
3. פורמט א חותמת זמן כ חוּט
לפרמט א חותמת זמן, יהיה לנו אתגר זהה מכיוון שפורמט ברירת המחדל הוא הפורמט הקניינית של JDBC:
assertEquals ("2018-11-12 13: 02: 56.12345678", timestamp.toString ());
אך שוב, באמצעות המרת מתווך אנו יכולים לעצב את התוצאה חוּט לתבנית תאריך ושעה שונה, כמו תקן ISO-8601:
חותמת זמן חותמת זמן = Timestamp.valueOf ("2018-12-12 01: 02: 03.123456789"); מעצב DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; מחרוזת timestampAsString = formatter.format (timestamp.toLocalDateTime ()); assertEquals ("2018-12-12T01: 02: 03.123456789", timestampAsString);
4. מסקנה
במאמר זה ראינו כיצד להמיר בין חוּט ו חותמת זמן אובייקטים בג'אווה. כמו כן, ראינו כיצד להשתמש LocalDateTime המרה כשלב מתווך במטרה להמיר לתבניות תאריך ושעה שונות וממנה.
וודא למצוא את כל הדוגמאות והקטעים האלה ב- GitHub.