Date.getTime () retorna milissegundos desde 1 de janeiro de 1970. O tempo unix é segundos desde 1 de janeiro de 1970. Normalmente não codigo em java, mas estou trabalhando em algumas correções. Eu tenho:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Existe uma maneira melhor de obter unixtime em java?
java
unix-timestamp
Gary Richardson
fonte
fonte
long
, nãoint
. Não há realmente nenhuma razão para usarint
para um carimbo de data / hora, a menos que você esteja usando uma granularidade diferente como 1 segundo = 4 segundos etc. Ou isso, ou oculte seu código para que as gerações futuras não possam ver o quão incompetente você era.Respostas:
Evite a criação do objeto Data com System.currentTimeMillis () . Uma divisão por 1000 leva você à época do Unix.
Como mencionado em um comentário, você normalmente deseja um longo primitivo (minúsculo-l longo) e não um objeto em caixa longo (maiúscula-L longo) para o tipo da variável unixTime.
fonte
O Java 8 adicionou uma nova API para trabalhar com datas e horas. Com o Java 8 você pode usar
Instant.now()
retorna um instante que representa a hora atual do sistema. ComgetEpochSecond()
você obtém os segundos da época (tempo unix) a partir doInstant
.fonte
Instant.now().getEpochSecond()
,new Date().getTime()
eSystem.currentTimeMillis()
import java.time.Instant
se você estiver em Scala