2323import java .time .LocalDate ;
2424import java .time .LocalTime ;
2525import java .time .ZoneId ;
26+ import java .time .ZonedDateTime ;
2627import java .util .ArrayList ;
2728import java .util .Collection ;
2829import java .util .List ;
4142abstract class Jsr310TimestampBasedConverters {
4243
4344 static Collection <Converter <?, ?>> getConvertersToRegister () {
44- List <Converter <?, ?>> converters = new ArrayList ( 8 );
45+ List <Converter <?, ?>> converters = new ArrayList <>( 4 );
4546
4647 converters .add (LocalDateToTimestampConverter .INSTANCE );
4748 converters .add (LocalTimeToTimestampConverter .INSTANCE );
48- converters .add (TimestampToInstantConverter .INSTANCE );
4949 converters .add (InstantToTimestampConverter .INSTANCE );
50+ converters .add (ZonedDateTimeToTimestampConverter .INSTANCE );
5051
5152 return converters ;
5253 }
5354
5455 enum LocalDateToTimestampConverter implements Converter <LocalDate , Timestamp > {
5556 INSTANCE ;
5657
57- private LocalDateToTimestampConverter () {
58+ LocalDateToTimestampConverter () {
5859 }
5960
6061 @ NonNull
@@ -66,7 +67,7 @@ public Timestamp convert(LocalDate source) {
6667 enum LocalTimeToTimestampConverter implements Converter <LocalTime , Timestamp > {
6768 INSTANCE ;
6869
69- private LocalTimeToTimestampConverter () {
70+ LocalTimeToTimestampConverter () {
7071 }
7172
7273 @ NonNull
@@ -75,27 +76,27 @@ public Timestamp convert(LocalTime source) {
7576 }
7677 }
7778
78- enum TimestampToInstantConverter implements Converter <Timestamp , Instant > {
79+ enum InstantToTimestampConverter implements Converter <Instant , Timestamp > {
7980 INSTANCE ;
8081
81- private TimestampToInstantConverter () {
82+ InstantToTimestampConverter () {
8283 }
8384
8485 @ NonNull
85- public Instant convert (Timestamp source ) {
86- return source . toInstant ( );
86+ public Timestamp convert (Instant source ) {
87+ return Timestamp . from ( source );
8788 }
8889 }
8990
90- enum InstantToTimestampConverter implements Converter <Instant , Timestamp > {
91+ enum ZonedDateTimeToTimestampConverter implements Converter <ZonedDateTime , Timestamp > {
9192 INSTANCE ;
9293
93- private InstantToTimestampConverter () {
94+ ZonedDateTimeToTimestampConverter () {
9495 }
9596
9697 @ NonNull
97- public Timestamp convert (Instant source ) {
98- return Timestamp .from (source );
98+ public Timestamp convert (ZonedDateTime source ) {
99+ return Timestamp .from (source . toInstant () );
99100 }
100101 }
101102}
0 commit comments