המר בין java.time.Instant ו- java.sql.Timestamp

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

שניהם java.time. מיידי ו java.sql. חותמת זמן שיעורים מייצגים נקודה על ציר הזמן ב- UTC. במילים אחרות, הם מייצגים את מספר הננו-שניות מאז תקופת ג'אווה.

במדריך מהיר זה, נמיר אחד לשני באמצעות שיטות Java מובנות.

2. המרה רֶגַע ל חותמת זמן ובחזרה

אנחנו יכולים להשתמש Timestamp.from () להמיר רֶגַעאל חותמות זמן:

מיידי מיידי = Instant.now (); חותמת זמן חותמת זמן = Timestamp.from (מיידי); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

ולהיפך, נוכל להשתמש Timestamp.toInstant () להמיר חותמת זמןs לתוך רֶגַעs:

מיידי = חותמת זמן.אינסטנט (); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

כך או כך, גם ה רֶגַע ו חותמת זמן מייצג את אותה נקודה בציר הזמן.

לאחר מכן, בואו נסתכל על האינטראקציה בין שתי הכיתות ואזור הזמן.

3. toString () הבדלים בשיטה

קורא toString () עַל רֶגַע ו חותמת זמן מתנהג אחרת ביחס לאזור הזמן.Instant.toString () מחזירה את השעה באזור הזמן של UTC. מצד שני, Timezone.toString () מחזיר את הזמן באזור הזמן של המכונה המקומית.

בואו נראה מה אנחנו מקבלים כשמתקשרים toString () עַל רֶגַע ו אזור זמן בהתאמה:

מיידי (ב- UTC): 2018-10-18T00: 00: 57.907Z חותמת זמן (ב- GMT +05: 30): 2018-10-18 05: 30: 57.907

הנה, timestamp.toString () הביא לזמן שהוא 5 שעות 30 דקות לאחר הזמן שהוחזר על ידי instant.toString (). הסיבה לכך היא שאזור הזמן של המכונה המקומית הוא ב- GMT +5: 30 אזור זמן.

התפוקה של toString () השיטה שונה, אך שניהם חותמת זמן ו רֶגַע מייצגים את אותה נקודה על ציר הזמן.

אנו יכולים גם לאמת זאת על ידי המרת ה- חותמת זמן לאזור הזמן של UTC:

DateFormat df = DateFormat.getDateTimeInstance (); df = חדש SimpleDateFormat ("yyyy-MM-dd'T'HH: mm: ss: SS'Z '"); df.setTimeZone (TimeZone.getTimeZone ("UTC")); assertEquals (instant.toString (), df.format (חותמת זמן). toString ());

4. מסקנה

במדריך מהיר זה ראינו כיצד להמיר בין java.time. מיידי ו java.sql. חותמת זמן שיעורים בג'אווה בשיטות מובנות.

בדקנו גם כיצד אזור הזמן משפיע על שינוי הפלט.

וכמו תמיד, דוגמאות הקוד המלאות זמינות ב- GitHub.


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