Date.getTime () gibt Millisekunden seit dem 1. Januar 1970 zurück. Unixtime ist Sekunden seit dem 1. Januar 1970. Ich codiere normalerweise nicht in Java, arbeite aber an einigen Fehlerkorrekturen. Ich habe:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Gibt es einen besseren Weg, um Unixtime in Java zu bekommen?
java
unix-timestamp
Gary Richardson
quelle
quelle
long
nichtint
. Es gibt wirklich keinen Grund,int
einen Zeitstempel zu verwenden, es sei denn, Sie verwenden eine andere Granularität wie 1 Sekunde = 4 Sekunden usw. Entweder das, oder Sie verbergen Ihren Code, damit zukünftige Generationen nicht sehen können, wie inkompetent Sie waren.Antworten:
Vermeiden Sie die Erstellung des Datumsobjekts mit System.currentTimeMillis () . Eine Division durch 1000 bringt Sie zur Unix-Epoche.
Wie in einem Kommentar erwähnt, möchten Sie normalerweise ein primitives Long (Kleinbuchstabe-L Long) und kein Boxed Object Long (Großbuchstabe-L Long) für den Typ der unixTime-Variablen.
quelle
Java 8 hat eine neue API zum Arbeiten mit Datum und Uhrzeit hinzugefügt. Mit Java 8 können Sie verwenden
Instant.now()
Gibt einen Instant zurück , der die aktuelle Systemzeit darstellt. Mit erhaltengetEpochSecond()
Sie die Epoche Sekunden (Unix-Zeit) von derInstant
.quelle
Instant.now().getEpochSecond()
,new Date().getTime()
undSystem.currentTimeMillis()
import java.time.Instant
wenn Sie in Scala