Necesito saber, en Java (JDK mi versión 8), puedo reemplazar, new DateTime(System.currentTimeMillis())
esta forma de código, ' DateTime.now()
'?
Solía paquete import org.joda.time.DateTime;
Cómo escribir esto mismo en java 8 (fecha y hora)?
tl; dr
java.time.Instant.now() // Capture the current moment in UTC.
Internamente, el momento es rastreado como un recuento de segundos enteros más una fracción de segundo como el recuento de nanosegundos, ya que la referencia época de 1970-01-01T00: 00: 00Z (los Z
medios UTC).
java.time
Su DateTime
clase es al parecer de la biblioteca Joda-Time. El creador de esa biblioteca, Stephen Colebourne, pasó a sustituir a Joda-Time con los java.time clases integradas en Java 8 y versiones posteriores, por JSR 310.
Instant
Por un momento en UTC, utilice Instant
. Para capturar el momento actual en GMT, Instant.now()
.
Instant
representa un recuento de nanosegundos desde la época de referencia el primer momento de 1970 en UTC.
La llamada a System.currentTimeMillis()
es lo mismo, un recuento desde el inicio de 1970 UTC, excepto una resolución más gruesa de milisegundos en lugar de nanosegundos. En la práctica, relojes de los equipos convencionales no pueden rastrear con precisión el momento actual en nanosegundos, así capturar el momento actual con Instant
captura puede sólo microsegundos (típicos en Java 9 y posterior) o milisegundos (en Java 8).
El resultado: No hay necesidad de llamar cada vezSystem.currentTimeMillis()
. Utilice Instant.now()
en su lugar.
ZonedDateTime
El equivalente DateTime
sería ZonedDateTime
. Esta clase representa un momento como se ve a través del tiempo de pared de reloj utilizada por la gente de una región particular (una zona horaria).
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;