tl; dr
ZonedDateTime.now(
ZoneId.of( "America/Montreal" )
)
... de la zona horaria predeterminada actual ...
ZonedDateTime.now(
ZoneId.systemDefault()
)
Detalles
La respuesta de Stanislav Bshkyrtsev responde correcta y directamente a su pregunta.
Pero hay problemas más importantes involucrados, como se sugiere en la Respuesta de Jon Skeet .
LocalDateTime
No encuentro la manera de convertir epoch second a LocalDateTime
LocalDateTime
intencionalmente no tiene un concepto de zona horaria o desplazamiento de UTC. Probablemente no sea lo que quieras. El Local…
significa cualquier localidad, no cualquier localidad en particular. Esta clase no representa un momento, solo momentos potenciales en un rango de aproximadamente 26-27 horas (el rango de zonas horarias alrededor del mundo).
Instant
No es necesario comenzar con los segundos de época si está tratando de obtener la hora actual. Obtenga la corriente Instant
. La Instant
clase representa un momento en la línea de tiempo en UTC con una resolución de nanosegundos (hasta nueve (9) dígitos de una fracción decimal).
Instant instant = Instant.now();
Dentro de eso Instant
hay un recuento de nanosegundos desde la época. Pero realmente no nos importa.
ZonedDateTime
Si desea ver ese momento a través del lente del reloj de pared de una región en particular, aplique a ZoneId
para obtener a ZonedDateTime
.
ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = instant.atZone( z );
Como atajo, puede hacerlo directamente al ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.now( z );
A ZonedDateTime
tiene un Instant
dentro de él. Llame zdt.toInstant()
para obtener el mismo momento en el tiempo que un valor básico en UTC . El mismo número de nanosegundos desde la época de cualquier manera, como a ZonedDateTime
o como a Instant
.
Segundos desde la época dada
Si se le da un recuento de segundos desde época, y la época es el primer momento de 1970 en UTC ( 1970-01-01T00:00:00Z
), ingrese ese número a Instant
.
long secondsSinceEpoch = 1_484_063_246L ;
Instant instant = Instant.ofEpochSecond( secondsSinceEpoch ) ;
Acerca de java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date
, Calendar
, y SimpleDateFormat
.
Para obtener más información, consulte el tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No se necesitan cuerdas, no se necesitan java.sql.*
clases.
¿Dónde obtener las clases java.time?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
, y más .
import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}
funcione la importación masiva ? Esunexpected token
para mí en Java 11.