Przed Java8 użyłem klasy DateTime
Jody do włączenia informacji o strefie czasowej i mogę z łatwością przekonwertować między DateTime
i sql Timestamp
.Java 8 ZonedDateTime lub OffsetDateTime zastąpienie Joda DateTime
Po migracji do Java8, którą klasę należy wymienić? OffsetDateTime
lub ZonedDateTime
?
Próbowałem również użyć OffsetDateTime
, ale wydaje się, że nie można skonstruować z powrotem do OffsetDateTime
z sql Timestamp
.
Dla Joda DateTime
i Timestamp
konwertera, kod jest podobny:
val joda = DateTime.now()
val sqlJoda = new Timestamp(joda.getMillis)
val jodaBack = new DateTime(sqlJoda)
Ale Java8,
val java8 = OffsetDateTime.now()
val sqlJava8 = new Timestamp(java8.toInstant.toEpochMilli)
val java8Back = ???
Ktoś ma jakiś pomysł na ten temat? Wygląda na to, że Joda DateTime
jest naprawdę dobra.
Oficjalne odwzorowanie znacznika czasu SQL to: LocalDateTime (znacznik czasu bez strefy czasowej) lub OffsetDateTime (znacznik czasu ze strefą czasową). Patrz na przykład wersja 2 wydania JDBC 4 JCP tutaj: https://jcp.org/en/jsr/detail?id=221 – assylias
Nie wiedziałem tego. Dzięki. Czy jest tam jakiś dokument? – spa
Zobacz też: http://stackoverflow.com/a/31749317/829571 – assylias