עיצוב ZonedDateTime למחרוזת

1. סקירה כללית

במדריך מהיר זה נראה כיצד להמיר א ZonedDateTime אל א חוּט.

נבדוק גם כיצד לנתח א ZonedDateTime מ חוּט.

2. יצירת א ZonedDateTime

ראשית, נתחיל עם ZonedDateTime עם אזור זמן של UTC. ישנן מספר דרכים בהן אנו יכולים להשיג זאת.

אנו יכולים לציין את השנה, החודש, היום וכו ':

ZonedDateTime zonedDateTimeOf = ZonedDateTime.of (2018, 01, 01, 0, 0, 0, 0, ZoneId.of ("UTC"));

אנחנו יכולים גם ליצור ZonedDateTime מהתאריך והשעה הנוכחיים:

ZonedDateTime zonedDateTimeNow = ZonedDateTime.now (ZoneId.of ("UTC"));

לחלופין, אנו יכולים ליצור ZonedDateTime מקיים LocalDateTime:

LocalDateTime localDateTime = LocalDateTime.now (); ZonedDateTime zonedDateTime = ZonedDateTime.of (localDateTime, ZoneId.of ("UTC"));

3. ZonedDateTime ל חוּט

עכשיו, בואו להמיר את שלנו ZonedDateTime אל א חוּט. לזה, נשתמש ב- DateTimeFormatter מעמד.

ישנם מספר מעצבים מיוחדים בהם אנו יכולים להשתמש כדי להציג נתוני אזור זמן. את רשימת המעצבים המלאה תוכלו למצוא כאן, אך נבחן כמה מהנפוצות יותר.

אם אנחנו רוצים כדי להציג את קיזוז אזור הזמן, אנו יכולים להשתמש ב- מעצב "Z" או "X":

מעצב DateTimeFormatter = DateTimeFormatter.ofPattern ("MM / dd / yyyy - HH: mm: ss Z"); מחרוזת formattedString = zonedDateTime.format (מעצב);

זה ייתן לנו תוצאה כזו:

02/01/2018 - 13:45:30 +0000

כדי לכלול את שם אזור הזמן, נוכל להשתמש ב- "z" באותיות קטנות:

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern ("MM / dd / yyyy - HH: mm: ss z"); String formattedString2 = zonedDateTime.format (formatter2);

התפוקה של זה תהיה:

02/01/2018 - 13:45:30 UTC

4. חוּט ל ZonedDateTime

תהליך זה יכול לעבוד גם הפוך. אנחנו יכולים לקחת מחרוזת ולהמיר אותה בחזרה ל- ZonedDateTime.

אפשרות אחת לעשות זאת היא באמצעות סטָטִי לְנַתֵחַ() שיטת ה- ZonedDateTime מעמד:

ZonedDateTime zonedDateTime = ZonedDateTime.parse ("2011-12-03T10: 15: 30 + 01: 00");

בשיטה זו משתמשים ב- ISO_ZONED_DATE_TIME מעצב. יש גם גרסה עמוסה של השיטה שלוקחת א DateTimeFormatter פָּרָמֶטֶר. עם זאת, המחרוזת צריכה להכיל מזהה אזור או שנקבל חריג:

assertThrows (DateTimeParseException.class, () -> ZonedDateTime.parse ("2011-12-03T10: 15: 30", DateTimeFormatter.ISO_DATE_TIME));

אפשרות שנייה להשיג א ZonedDateTime מ חוּט כולל שני שלבים: המרת המחרוזת ל- LocalDateTime, ואז האובייקט הזה לא ZonedDateTime:

ZoneId timeZone = ZoneId.systemDefault (); ZonedDateTime zonedDateTime = LocalDateTime.parse ("2011-12-03T10: 15: 30", DateTimeFormatter.ISO_DATE_TIME) .atZone (timeZone); log.info (zonedDateTime.format (DateTimeFormatter.ISO_ZONED_DATE_TIME));

שיטה עקיפה זו פשוט משלבת את תאריך השעה עם מזהה אזור:

מידע: 2011-12-03T10: 15: 30 + 02: 00 [אירופה / אתונה]

למידע נוסף על ניתוח מחרוזת לתאריכים, עיין במאמר שלנו בנושא ניתוח תאריכים מעמיק יותר.

5. מסקנה

במאמר זה ראינו כיצד ליצור ZonedDateTime, ואיך לעצב את זה כ- חוּט.

בדקנו גם במהירות כיצד לנתח מחרוזת זמן תאריך ולהמיר לא ZonedDateTime.

קוד המקור של הדרכה זו זמין באתר Github.


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