Nell’ultimo esempio, abbiamo imparato come convertire una data in stringa in Java. In questo esempio, sto convertendo un oggetto data Java da un fuso orario a un altro. Utilizzeremo la classe SimpleDateFormat per formattare la data in un formato specifico e imposteremo il fuso orario per stampare la data in un fuso orario specifico.
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) {
// controllo null
if (date == null) return null;
// crea l'oggetto SimpleDateFormat con il formato di input
SimpleDateFormat sdf = new SimpleDateFormat(format);
// fuso orario di sistema predefinito se viene passato null o vuoto
if (timeZone == null || "".equalsIgnoreCase(timeZone.trim())) {
timeZone = Calendar.getInstance().getTimeZone().getID();
}
// imposta il fuso orario per SimpleDateFormat
sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
// restituisci la data nel formato richiesto con il fuso orario come stringa
return sdf.format(date);
}
public static void main(String[] args) {
// Testa il metodo 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"));
}
}
Ecco l’output del programma:
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
Dall’output, è chiaro che il fuso orario del mio sistema è PST e quindi sta convertendo lo stesso oggetto data in fusi orari diversi come IST e GMT e stampandolo. Utilizzando il mio ultimo tutorial, è possibile convertire nuovamente la stringa restituita in un oggetto data. Aggiornamento: Java 8 ha aggiunto una nuova API Date Time, dovresti darci un’occhiata su Java 8 Date.