import java.time.*;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main
(String[] args
) { ZoneId zoneId = ZoneId.of("America/Los_Angeles");
DateTimeFormatter parser = DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss.SSS");
LocalDateTime ldt = LocalDateTime.parse("14-05-29 17:42:20.123", parser);
ZonedDateTime zdt = ldt.atZone(zoneId);
// Alternatively (not my favourite),
DateTimeFormatter parserWithTz = DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss.SSS")
.withZone(zoneId);
ZonedDateTime zdt2 = ZonedDateTime.parse("14-05-29 17:42:20.123", parserWithTz);
// A sample date-time DST is off
System.
out.
println(LocalDateTime.
parse("14-12-29 17:42:20.123", parser
).
atZone(zoneId
));
// If you need the date-time with just the time zone offset
OffsetDateTime odt = zdt.toOffsetDateTime();
}
}
aW1wb3J0IGphdmEudGltZS4qOwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC5EYXRlVGltZUZvcm1hdHRlcjsKCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBab25lSWQgem9uZUlkID0gWm9uZUlkLm9mKCJBbWVyaWNhL0xvc19BbmdlbGVzIik7CgogICAgICAgIERhdGVUaW1lRm9ybWF0dGVyIHBhcnNlciA9IERhdGVUaW1lRm9ybWF0dGVyLm9mUGF0dGVybigieXktTU0tZGQgSEg6bW06c3MuU1NTIik7CiAgICAgICAgTG9jYWxEYXRlVGltZSBsZHQgPSBMb2NhbERhdGVUaW1lLnBhcnNlKCIxNC0wNS0yOSAxNzo0MjoyMC4xMjMiLCBwYXJzZXIpOwoKICAgICAgICBab25lZERhdGVUaW1lIHpkdCA9IGxkdC5hdFpvbmUoem9uZUlkKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oemR0KTsKCiAgICAgICAgLy8gQWx0ZXJuYXRpdmVseSAobm90IG15IGZhdm91cml0ZSksCiAgICAgICAgRGF0ZVRpbWVGb3JtYXR0ZXIgcGFyc2VyV2l0aFR6ID0gRGF0ZVRpbWVGb3JtYXR0ZXIub2ZQYXR0ZXJuKCJ5eS1NTS1kZCBISDptbTpzcy5TU1MiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC53aXRoWm9uZSh6b25lSWQpOwogICAgICAgIFpvbmVkRGF0ZVRpbWUgemR0MiA9IFpvbmVkRGF0ZVRpbWUucGFyc2UoIjE0LTA1LTI5IDE3OjQyOjIwLjEyMyIsIHBhcnNlcldpdGhUeik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHpkdDIpOwoKICAgICAgICAvLyBBIHNhbXBsZSBkYXRlLXRpbWUgRFNUIGlzIG9mZgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihMb2NhbERhdGVUaW1lLnBhcnNlKCIxNC0xMi0yOSAxNzo0MjoyMC4xMjMiLCBwYXJzZXIpLmF0Wm9uZSh6b25lSWQpKTsKCiAgICAgICAgLy8gSWYgeW91IG5lZWQgdGhlIGRhdGUtdGltZSB3aXRoIGp1c3QgdGhlIHRpbWUgem9uZSBvZmZzZXQKICAgICAgICBPZmZzZXREYXRlVGltZSBvZHQgPSB6ZHQudG9PZmZzZXREYXRlVGltZSgpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvZHQpOwogICAgfQp9