import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;

public class Main {
	public static void main(String[] args) {
		ZonedDateTime zdt = LocalDate.of(2009, 12, 9).atStartOfDay(ZoneId.of("Etc/GMT")); // Etc/UTC
		System.out.println(zdt);

		// In some custom format
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssxx", Locale.ENGLISH);
		System.out.println(dtf.format(zdt));

		Instant instant = zdt.toInstant();
		System.out.println(instant);
		Date date = Date.from(instant);
		System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH).format(date));
	}
}