הגדר את אזור הזמן של תאריך ב- Java

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

במדריך מהיר זה נראה כיצד להגדיר את אזור הזמן של תאריך באמצעות Java 7, Java 8 וספריית Joda-Time.

2. שימוש ב- Java 8

Java 8 הציגה ממשק API חדש של Date-Time לעבודה עם תאריכים ושעות שהתבסס במידה רבה על ספריית Joda-Time.

ה רֶגַע class מ- Java Date Time API מעצב נקודה מיידית אחת על ציר הזמן ב- UTC. זה מייצג את ספירת הננו-שניות מאז תקופת הרגע הראשון של 1970 UTC.

ראשית, נשיג את הזרם רֶגַע משעון המערכת ו ZoneId לשם אזור זמן:

מיידי nowUtc = Instant.now (); ZoneId asiaSingapore = ZoneId.of ("אסיה / סינגפור");

סוף - סוף, ה ZoneId ו רֶגַע ניתן להשתמש בהם ליצירת אובייקט תאריך שעה עם פרטי אזור הזמן. ה ZonedDateTime מחלקה מייצגת זמן תאריך עם אזור זמן במערכת לוח השנה ISO-8601:

ZonedDateTime nowAsiaSingapore = ZonedDateTime.ofInstant (nowUtc, asiaSingapore);

השתמשנו ב- Java 8 ZonedDateTime כדי לייצג תאריך שעה עם אזור זמן.

3. שימוש ב- Java 7

ב- Java 7, הגדרת אזור הזמן היא קצת מסובכת. ה תַאֲרִיך class (המייצג רגע ספציפי בזמן) אינו מכיל מידע על אזור הזמן.

ראשית, בואו נקבל את תאריך ה- UTC הנוכחי ו אזור זמן לְהִתְנַגֵד:

תאריך nowUtc = תאריך חדש (); TimeZone asiaSingapore = TimeZone.getTimeZone (timeZone);

ב- Java 7 עלינו להשתמש ב- לוּחַ שָׁנָה בכיתה לייצוג תאריך עם אזור זמן.

לבסוף, אנו יכולים ליצור nowUtc לוח שנה עם ה אסיה סינגפור TimeZone וקבע את השעה:

לוח שנה nowAsiaSingapore = Calendar.getInstance (asiaSingapore); nowAsiaSingapore.setTime (nowUtc);

מומלץ להימנע מ- API 7 של תאריך Java 7 לטובת API 8 של Java date of API או מספריית Joda-Time.

4. שימוש בג'ודה-טיים

אם Java 8 אינו אפשרות, אנחנו עדיין יכולים להשיג את אותו סוג של תוצאות מ- Joda-Time, תקן דה-פקטו לפעולות מועד בעולם לפני ה- Java 8.

ראשית, עלינו להוסיף את התלות בג'ודה-טיים pom.xml:

 joda-time joda-time 2.10 

כדי לייצג נקודה מדויקת על ציר הזמן אנו יכולים להשתמש רֶגַע מ org.joda.time חֲבִילָה. באופן פנימי, הכיתה מחזיקה פיסת נתונים אחת, הרגע כמו אלפיות השנייה מתקופת ג'אווה של 1970-01-01T00: 00: 00Z:

מיידי nowUtc = Instant.now ();

נשתמש DateTimeZone לייצג אזור זמן (עבור מזהה אזור הזמן שצוין):

DateTimeZone asiaSingapore = DateTimeZone.forID ("אסיה / סינגפור");

עכשיו ה nowUtc הזמן יומר לא תאריך שעה חפץ באמצעות מידע על אזור הזמן:

DateTime nowAsiaSingapore = nowUtc.toDateTime (asiaSingapore);

כך ניתן להשתמש ב- Joda-time API לשילוב מידע על תאריך ואזור זמן.

5. מסקנה

במאמר זה גילינו כיצד להגדיר את אזור הזמן ב- Java באמצעות Java 7, 8 ו- Joda-Time API. למידע נוסף על התמיכה במועד תאריך Java 8, עיין במבוא שלנו ב- Java 8 למועד.

כמו תמיד קטע הקוד זמין במאגר GitHub.


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