המר java.util.Date למחרוזת
1. סקירה כללית
במדריך זה נראה כיצד אנו יכולים להמיר תַאֲרִיך חפצים ל חוּט אובייקטים בג'אווה. לשם כך, נעבוד עם המבוגרים java.util.Date סוג כמו גם עם החדש תאריך שעה ממשק API שהוצג ב- Java 8.
אם תרצה ללמוד כיצד לבצע את ההמרה ההפוכה, כלומר מ חוּט ל תַאֲרִיך סוגים, אתה יכול לבדוק את המדריך הזה כאן.
לפרטים נוספים לגבי חדש תאריך שעה ממשק API, עיין במדריך הקשור הזה.
2. המרה java.util.Date ל חוּט
למרות שאנחנו לא צריכים להשתמש java.util.Date אם אנחנו עובדים עם Java 8, לפעמים אין לנו ברירה (למשל, אנחנו מקבלים את תַאֲרִיך אובייקט מספרייה שאינו בשליטתנו).
במקרים כאלה יש לנו מספר דרכים להמיר java.util.Date ל חוּט לרשותנו.
2.1. מכין את תַאֲרִיך לְהִתְנַגֵד
בואו נכריז ראשית כצפוי חוּט ייצוג התאריך שלנו והגדר תבנית של תבנית תאריך רצויה:
סופי סטטי פרטי מחרוזת EXPECTED_STRING_DATE = "1 באוגוסט, 2018 12:00"; סופי סטטי פרטי מחרוזת DATE_FORMAT = "MMM d, yyyy HH: mm a";
עכשיו אנחנו צריכים ממש תַאֲרִיך אובייקט שאנחנו רוצים להמיר. נשתמש ב- לוּחַ שָׁנָה למשל כדי ליצור אותו:
TimeZone.setDefault (TimeZone.getTimeZone ("CET")); לוח שנה לוח שנה = Calendar.getInstance (); calendar.set (2018, Calendar.AUGUST, 1, 12, 0); תאריך תאריך = calendar.getTime ();
הגדרנו ברירת מחדל אזור זמן ל CET כדי למנוע בעיות בעבודה עם ה- API החדש מאוחר יותר. עלינו לציין זאת ה תַאֲרִיך לעצמו אין שום אזור זמן, אבל זה toString () משתמש באזור הזמן המוגדר כברירת מחדל.
נשתמש בזה תַאֲרִיך למשל בכל הדוגמאות שלנו להלן.
2.2. משתמש ב SimpleDateFormat מעמד
נשתמש ב- פוּרמָט() שיטת ה- SimpleDateFormat בכיתה בדוגמה זו. בואו ליצור מופע שלו באמצעות פורמט התאריך שלנו:
מעצב DateFormat = SimpleDateFormat חדש (DATE_FORMAT);
לאחר מכן, אנו יכולים לעצב את התאריך שלנו ולהשוות אותו לפלט הצפוי:
מחרוזת formattedDate = formatter.format (תאריך); assertEquals (EXPECTED_STRING_DATE, תאריך מעוצב);
2.3. שימוש בתמצית פורמט תאריך מעמד
כפי שיכולנו לראות, SimpleDateFormat הוא תת-מחלקה של המופשט פורמט תאריך מעמד. מחלקה זו מספקת שיטות שונות לעיצוב תאריך ושעה.
נשתמש בו להשגת אותה תפוקה כנ"ל:
מחרוזת formattedDate = DateFormat .getDateTimeInstance (DateFormat.MEDIUM, DateFormat.SHORT) .format (תאריך);
בגישה זו אנו מעבירים דפוסי סגנון - בינוני לתאריך ו קצר לזמן בענייננו.
3. באמצעות מעצב מעמד
דרך פשוטה נוספת להשיג את אותו הדבר חוּט כמו בדוגמאות קודמות הוא להשתמש ב- מעצב מעמד.
אמנם זה לא יכול להיות הפיתרון הקריא ביותר, זהו קו תוחם חד-בטיחותי שיכול להיות שימושי, במיוחד בסביבה מרובת-הברגה (עלינו לזכור זאת SimpleDateFormat אינו בטוח בחוטים):
מחרוזת formattedDate = String.format ("% 1 $ tb% 1 $ te,% 1 $ tY% 1 $ tI:% 1 $ tM% 1 $ Tp", תאריך);
השתמשנו 1$ כדי לציין שנעביר רק טיעון אחד שישמש בכל דגל. הסבר מפורט על הדגלים נמצא בחלק המרות תאריך / שעה מעצב מעמד.
4. המרה באמצעות Java 8 ממשק API לתאריך / שעה
ה תאריך שעה API מג'אווה 8 הוא הרבה יותר חזק מ- java.util.Date ו java.util.Calendar ושיעורים עלינו להשתמש בו במידת האפשר. בואו נראה כיצד נוכל להשתמש בו כדי להמיר את הקיים שלנו תַאֲרִיך להתנגד ל חוּט.
הפעם נשתמש ב- DateTimeFormatter הכיתה שלה פוּרמָט() שיטה, כמו גם אותה תבנית תאריך, המוצהרת בסעיף 2.1:
מעצב DateTimeFormatter = DateTimeFormatter.ofPattern (DATE_FORMAT);
כדי להשתמש ב- API החדש, עלינו לעשות זאת להמיר את שלנו תַאֲרִיך להתנגד ל- רֶגַע לְהִתְנַגֵד:
מיידי מיידי = date.toInstant ();
מאז הצפוי שלנו חוּט יש גם חלקי תאריך ושעה, אנחנו גם צריכים להמיר את רֶגַע להתנגד ל LocalDateTime:
LocalDateTime ldt = instant .atZone (ZoneId.of ("CET")) .toLocalDateTime ();
ולבסוף, אנחנו יכולים בקלות לעצב את העיצוב שלנו חוּט:
מחרוזת formattedDate = ldt.format (מעצב);
5. מסקנה
במאמר זה הדגמנו מספר דרכי המרה java.util.Date חפצים ל חוּט. לראשונה הראינו כיצד לעשות זאת באמצעות הישן יותר java.util.Date ו java.util.Calendar שיעורים ושיעורי עיצוב תאריכים מתאימים.
ואז השתמשנו ב- מעצב בכיתה ולבסוף ה- Java 8 תאריך / שעה API.
כמו תמיד, ניתן למצוא קוד מקור מלא ב- GitHub.