I have an object of ZonedDateTime that is constructed like this
ZonedDateTime z = ZonedDateTime.of(LocalDate.now().atTime(11, 30), ZoneOffset.UT
Another option that seems a little more intuitive is to convert the zoned date to an instant, then use LocalDateTime.ofInstant:
ZonedDateTime z = ZonedDateTime.of(LocalDate.now().atTime(11, 30), ZoneOffset.UTC);
ZoneId z = ZoneId.of("US/Central");
LocalDateTime l = LocalDateTime.ofInstant(z.toInstant(), z);
I prefer this to withZoneSameInstant because that solution little more opaque - you're getting a ZonedDateTime that has to be in a particular internal state (the correct time zone). Using ofInstant can be used on any ZonedDateTime in any time zone.