בדוגמה האחרונה, למדנו כיצד להמיר את התאריך למחרוזת ב-Java. בדוגמה זו, אני ממיר את אובייקט התאריך של Java מאזור זמן אחד לאחר. נשתמש במחלקת SimpleDateFormat כדי לפורמט את התאריך בפורמט מסוים ונגדיר את אזור הזמן שלו כדי להדפיס את התאריך באזור זמן מסוים.
package com.journaldev.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class DateFormatter {
/**
* Utility function to convert java Date to TimeZone format
* @param date
* @param format
* @param timeZone
* @return
*/
public static String formatDateToString(Date date, String format,
String timeZone) {
// בדיקת ערך ריק
if (date == null) return null;
// יצירת אובייקט SimpleDateFormat עם פורמט קלט
SimpleDateFormat sdf = new SimpleDateFormat(format);
// אזור הזמן המערכתי ברירת המחדל אם נשלח ערך ריק או ריק מחד
if (timeZone == null || "".equalsIgnoreCase(timeZone.trim())) {
timeZone = Calendar.getInstance().getTimeZone().getID();
}
// הגדרת אזור הזמן של SimpleDateFormat
sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
// החזרת התאריך בפורמט נדרש כמחרוזת עם אזור הזמן
return sdf.format(date);
}
public static void main(String[] args) {
// בדיקת פונקציית formatDateToString
Date date = new Date();
System.out.println("Default Date:"+date.toString());
System.out.println("System Date: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", null));
System.out.println("System Date in PST: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "PST"));
System.out.println("System Date in IST: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "IST"));
System.out.println("System Date in GMT: "+formatDateToString(date, "dd MMM yyyy hh:mm:ss a", "GMT"));
}
}
כאן הפלט של התוכנית:
Default Date:Wed Nov 14 21:37:01 PST 2012
System Date: 14 Nov 2012 09:37:01 PM
System Date in PST: 14 Nov 2012 09:37:01 PM
System Date in IST: 15 Nov 2012 11:07:01 AM
System Date in GMT: 15 Nov 2012 05:37:01 AM
מתוך הפלט, ברור שאזור הזמן של המערכת שלי הוא PST ולאחר מכן הוא ממיר את אותו אובייקט תאריך לאזורי זמן שונים כמו IST ו-GMT ומדפיס אותם. באמצעות המדריך הקודם שלי, תוכל שוב להמיר את המחרוזת שהתקבלה לאובייקט תאריך. עדכון: Java 8 הוסיפה ממשק תאריך חדש, כדאי לבדוק אותו ב-Java 8 Date.