unix-timestamp - Ottenere "unixtime" in Java



(3)

Date.getTime () restituisce millisecondi dal 1 gennaio 1970. Unixtime è secondi dal 1 ° gennaio 1970. Di solito non eseguo il codice in java, ma sto lavorando ad alcune correzioni di bug. Io ho:

Date now = new Date();      
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();

C'è un modo migliore per ottenere unixtime in java?

AGGIORNARE

Sulla base del suggerimento di John M, ho finito con:

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

Answers

Evita la creazione dell'oggetto Date con System.currentTimeMillis() . Una divisione per 1000 ti porta all'epoca Unix.

Come menzionato in un commento, in genere si desidera un oggetto lungo primitivo (minuscolo-l-lungo) e non un oggetto boxato lungo (maiuscolo-L lungo) per il tipo della variabile unixTime.

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

Java 8 ha aggiunto una nuova API per lavorare con date e orari. Con Java 8 puoi usare

long unixTimestamp = Instant.now().getEpochSecond();

Instant.now() restituisce un Instant che rappresenta l'ora attuale del sistema. Con getEpochSecond() ottieni i secondi epoca (tempo unix) da Instant .


Come menzionato Apache Commons NumberUtils può farlo. Che restituisce 0 se non può convertire string in int.

Puoi anche definire il tuo valore predefinito.

NumberUtils.toInt(String str, int defaultValue)

esempio:

NumberUtils.toInt("3244", 1) = 3244
NumberUtils.toInt("", 1)     = 1
NumberUtils.toInt(null, 5)   = 5
NumberUtils.toInt("Hi", 6)   = 6
NumberUtils.toInt(" 32 ", 1) = 1 //space in numbers are not allowed
NumberUtils.toInt(StringUtils.trimToEmpty( "  32 ",1)) = 32; 




java unix-timestamp