Dans le dernier exemple, nous avons appris comment convertir une Date en String en Java. Dans cet exemple, je convertis un objet Date Java d’un fuseau horaire à un autre. Nous utiliserons la classe SimpleDateFormat pour formater la Date dans un format spécifique et nous définirons son fuseau horaire pour imprimer la date dans un fuseau horaire spécifique.
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) {
// vérification de null
if (date == null) return null;
// création de l'objet SimpleDateFormat avec le format d'entrée
SimpleDateFormat sdf = new SimpleDateFormat(format);
// fuseau horaire système par défaut si null ou vide
if (timeZone == null || "".equalsIgnoreCase(timeZone.trim())) {
timeZone = Calendar.getInstance().getTimeZone().getID();
}
// définir le fuseau horaire pour SimpleDateFormat
sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
// retourner la Date dans le format requis avec le fuseau horaire en tant que String
return sdf.format(date);
}
public static void main(String[] args) {
//Test de la méthode 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"));
}
}
Voici la sortie du programme:
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
À partir de la sortie, il est clair que mon fuseau horaire système est PST et ensuite il convertit le même objet Date en différents fuseaux horaires comme IST et GMT et l’imprime. En utilisant mon dernier tutoriel, vous pouvez à nouveau convertir la chaîne renvoyée en un objet Date. Mise à jour: Java 8 a ajouté une nouvelle API Date Time, vous devriez la consulter à Java 8 Date.