Come convertire la data Java in un formato specifico di TimeZone

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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-convert-java-date-into-specific-timezone-format