המר בין מחרוזת לחותמת זמן

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.


$config[zx-auto] not found$config[zx-overlay] not found