Date.getTime () zwraca milisekundy od 1 stycznia 1970 roku. Unixtime to sekundy od 1 stycznia 1970 roku. Zwykle nie koduję w Javie, ale pracuję nad poprawkami błędów. Mam:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Czy istnieje lepszy sposób na uzyskanie czasu uniksowego w Javie?
java
unix-timestamp
Gary Richardson
źródło
źródło
long
, nieint
. Naprawdę nie ma powodu, aby używaćint
znacznika czasu, chyba że używasz innej ziarnistości, takiej jak 1 sekunda = 4 sekundy itp. Albo to, albo ukryj swój kod, aby przyszłe generacje nie mogły zobaczyć, jak jesteś niekompetentny.Odpowiedzi:
Unikaj tworzenia obiektów Date w / System.currentTimeMillis () . Dzielenie przez 1000 prowadzi do epoki uniksowej.
Jak wspomniano w komentarzu, zwykle chcesz, aby pierwotny długi (o małej l-długości) nie był długim obiektem w ramce (o dużej długości L) dla typu zmiennej unixTime.
źródło
Java 8 dodała nowy interfejs API do pracy z datami i godzinami. Z Javą 8 możesz korzystać
Instant.now()
zwraca Instant, który reprezentuje bieżący czas systemowy. ZgetEpochSecond()
dostaniesz sekund epoki (czas uniksowy) odInstant
.źródło
Instant.now().getEpochSecond()
,new Date().getTime()
aSystem.currentTimeMillis()
import java.time.Instant
jeśli jesteś w Scali