Date.getTime () devuelve milisegundos desde el 1 de enero de 1970. Unixtime es segundos desde el 1 de enero de 1970. No suelo codificar en Java, pero estoy trabajando en algunas correcciones de errores. Yo tengo:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
¿Hay una mejor manera de obtener unixtime en java?
java
unix-timestamp
Gary Richardson
fuente
fuente
long
, noint
. Realmente no hay razón para usarint
para una marca de tiempo, a menos que esté usando una granularidad diferente como 1 segundo = 4 segundos, etc. O eso, u oculte su código para que las generaciones futuras no puedan ver lo incompetente que era.Respuestas:
Evite la creación del objeto Fecha con System.currentTimeMillis () . Una división entre 1000 te lleva a la época de Unix.
Como se menciona en un comentario, normalmente desea un primitivo largo (minúscula-l largo) no un objeto en caja largo (mayúscula-L largo) para el tipo de variable unixTime.
fuente
Java 8 agregó una nueva API para trabajar con fechas y horas. Con Java 8 puedes usar
Instant.now()
devuelve un instante que representa la hora actual del sistema. CongetEpochSecond()
usted obtiene los segundos de la época (tiempo unix) delInstant
.fuente
Instant.now().getEpochSecond()
,new Date().getTime()
ySystem.currentTimeMillis()
import java.time.Instant
si estás en Scala