import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
/*
* Change the JVM's ZoneId, ZoneId.systemDefault() to the required ZoneId e.g. ZoneId.of("America/New_York")
*/
public class Main {
public static void main
(String[] args
) { // Test
ZoneId zoneId = ZoneId.of("Etc/UTC");
ZonedDateTime zdt = ZonedDateTime.of(LocalDate.of(2021, 5, 10), LocalTime.of(15, 20), zoneId);
System.
out.
println(zdt
+ " is " + convertFromZdtToLdt
(zdt
) + " at " + ZoneId.
systemDefault().
getId());
LocalDateTime ldt = LocalDateTime.of(LocalDate.of(2021, 5, 10), LocalTime.of(15, 20));
.println(ldt + " at " + ZoneId.systemDefault().getId() + " is " + convertFromLdtZdtToZdt(ldt, zoneId));
}
public static LocalDateTime convertFromZdtToLdt(ZonedDateTime zdt) {
return zdt.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();
}
public static ZonedDateTime convertFromLdtZdtToZdt(LocalDateTime ldt, ZoneId targetZoneId) {
return ldt.atZone(ZoneId.systemDefault()).withZoneSameInstant(targetZoneId);
}
}
aW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CmltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlVGltZTsKaW1wb3J0IGphdmEudGltZS5Mb2NhbFRpbWU7CmltcG9ydCBqYXZhLnRpbWUuWm9uZUlkOwppbXBvcnQgamF2YS50aW1lLlpvbmVkRGF0ZVRpbWU7CgovKgogKiBDaGFuZ2UgdGhlIEpWTSdzIFpvbmVJZCwgWm9uZUlkLnN5c3RlbURlZmF1bHQoKSB0byB0aGUgcmVxdWlyZWQgWm9uZUlkIGUuZy4gWm9uZUlkLm9mKCJBbWVyaWNhL05ld19Zb3JrIikKICovCnB1YmxpYyBjbGFzcyBNYWluIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQkvLyBUZXN0CgkJWm9uZUlkIHpvbmVJZCA9IFpvbmVJZC5vZigiRXRjL1VUQyIpOwoJCVpvbmVkRGF0ZVRpbWUgemR0ID0gWm9uZWREYXRlVGltZS5vZihMb2NhbERhdGUub2YoMjAyMSwgNSwgMTApLCBMb2NhbFRpbWUub2YoMTUsIDIwKSwgem9uZUlkKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oemR0ICsgIiBpcyAiICsgY29udmVydEZyb21aZHRUb0xkdCh6ZHQpICsgIiBhdCAiICsgWm9uZUlkLnN5c3RlbURlZmF1bHQoKS5nZXRJZCgpKTsKCgkJTG9jYWxEYXRlVGltZSBsZHQgPSBMb2NhbERhdGVUaW1lLm9mKExvY2FsRGF0ZS5vZigyMDIxLCA1LCAxMCksIExvY2FsVGltZS5vZigxNSwgMjApKTsKCQlTeXN0ZW0ub3V0CgkJCQkucHJpbnRsbihsZHQgKyAiIGF0ICIgKyBab25lSWQuc3lzdGVtRGVmYXVsdCgpLmdldElkKCkgKyAiIGlzICIgKyBjb252ZXJ0RnJvbUxkdFpkdFRvWmR0KGxkdCwgem9uZUlkKSk7Cgl9CgoJcHVibGljIHN0YXRpYyBMb2NhbERhdGVUaW1lIGNvbnZlcnRGcm9tWmR0VG9MZHQoWm9uZWREYXRlVGltZSB6ZHQpIHsKCQlyZXR1cm4gemR0LndpdGhab25lU2FtZUluc3RhbnQoWm9uZUlkLnN5c3RlbURlZmF1bHQoKSkudG9Mb2NhbERhdGVUaW1lKCk7Cgl9CgoJcHVibGljIHN0YXRpYyBab25lZERhdGVUaW1lIGNvbnZlcnRGcm9tTGR0WmR0VG9aZHQoTG9jYWxEYXRlVGltZSBsZHQsIFpvbmVJZCB0YXJnZXRab25lSWQpIHsKCQlyZXR1cm4gbGR0LmF0Wm9uZShab25lSWQuc3lzdGVtRGVmYXVsdCgpKS53aXRoWm9uZVNhbWVJbnN0YW50KHRhcmdldFpvbmVJZCk7Cgl9Cn0=