seconds Obtendo “unixtime” em Java



timestamp seconds java (2)

Date.getTime () retorna milissegundos desde 1 de janeiro de 1970. Unixtime é segundos desde 1 de janeiro de 1970. Eu não costumo programar em java, mas estou trabalhando em algumas correções de bugs. 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?

ATUALIZAR

Com base na sugestão de John M, acabei com:

return (int) (System.currentTimeMillis() / 1000L);

Answer #1

Evite a criação do objeto Date w / System.currentTimeMillis() . Uma divisão por 1000 leva você para a época do Unix.

Como mencionado em um comentário, você normalmente deseja que um objeto longo primitivo (letra minúscula-l longa) não seja um objeto de caixa longa (capital-L Long) para o tipo da variável unixTime.

long unixTime = System.currentTimeMillis() / 1000L;

Answer #2

O Java 8 adicionou uma nova API para trabalhar com datas e horas. Com o Java 8 você pode usar

import java.time.Instant
...
long unixTimestamp = Instant.now().getEpochSecond();

Instant.now() retorna um Instant que representa a hora atual do sistema. Com getEpochSecond() você obtém os segundos da época (tempo do unix) do Instant .





unix-timestamp