You are best to get a Timestamp
from a LocalDateTime
, rather than from an Instant
.
The first step is to take your ZonedDateTime
and convert it to GMT:
ZonedDateTime gmt = zdt.withZoneSameInstant(ZoneId.of("GMT"));
Then you can convert it to a Timestamp
via a LocalDateTime
:
Timestamp timestamp = Timestamp.valueOf(gmt.toLocalDateTime());