System.currentTimeMillis()
ist offensichtlich das effizienteste, da es nicht einmal ein Objekt erstellt, sondern new Date()
wirklich nur eine dünne Hülle über einen langen Zeitraum ist, sodass es nicht weit dahinter liegt. Calendar
Andererseits ist es relativ langsam und sehr komplex, da es sich mit der beträchtlichen Komplexität und allen Kuriositäten befassen muss, die Datums- und Uhrzeitangaben (Schaltjahre, Sommerzeit, Zeitzonen usw.) inhärent sind.
Im Allgemeinen ist es eine gute Idee, sich nur mit langen Zeitstempeln oder Date
Objekten in Ihrer Anwendung zu befassen und diese nur dann zu verwenden, Calendar
wenn Sie tatsächlich Datums- / Zeitberechnungen durchführen oder Datumsangaben formatieren müssen, um sie dem Benutzer anzuzeigen. Wenn Sie viel davon tun müssen, ist die Verwendung von Joda Time wahrscheinlich eine gute Idee, um eine sauberere Benutzeroberfläche und eine bessere Leistung zu erzielen.
Mit Blick auf das JDK hat der innerste Konstruktor für
Calendar.getInstance()
:es macht also schon automatisch das, was du vorschlägst. Der Standardkonstruktor von Date enthält Folgendes:
Es ist also wirklich nicht erforderlich, die Systemzeit speziell abzurufen, es sei denn, Sie möchten etwas damit rechnen, bevor Sie Ihr Kalender- / Datumsobjekt damit erstellen. Außerdem muss ich joda-time als Ersatz für Javas eigene Kalender- / Datumsklassen empfehlen, wenn Sie viel mit Datumsberechnungen arbeiten möchten .
quelle
Wenn Sie ein Datum verwenden, empfehle ich dringend, dass Sie jodatime verwenden, http://joda-time.sourceforge.net/ . Unter Verwendung
System.currentTimeMillis()
für Felder , die sind Daten klingen wie eine sehr schlechte Idee , weil Sie mit einer Menge von nutzlosem Code am Ende werden.Sowohl das Datum als auch der Kalender sind stark belastet, und der Kalender ist definitiv der schlechteste von allen.
Ich würde Ihnen raten, diese zu verwenden,
System.currentTimeMillis()
wenn Sie tatsächlich mit Millisekunden arbeiten, zum Beispiel soquelle
Ich bevorzuge es, den von zurückgegebenen Wert
System.currentTimeMillis()
für alle Arten von Berechnungen zu verwenden und nur zu verwendenCalendar
oderDate
wenn ich wirklich einen Wert anzeigen muss, der von Menschen gelesen wird. Dies verhindert auch 99% Ihrer Fehler bei der Sommerzeit. :) :)quelle
Auf meinem Computer habe ich versucht, es zu überprüfen. Mein Ergebnis:
Vergessen Sie nicht GC (wenn Sie
Calendar.getInstance()
oder verwendennew Date()
)quelle
Abhängig von Ihrer Anwendung sollten Sie
System.nanoTime()
stattdessen die Verwendung in Betracht ziehen .quelle
nanoTime
ist relativ (normalerweise zum Start des Programms) und wäre Unsinn, wenn Sie versuchen würden, daraus ein Datum zu machen.Ich habe es versucht:
Und das Ergebnis war:
Datum (): 199
currentTimeMillis (): 3
quelle
System.currentTimeMillis()
ist offensichtlich die schnellste, da es sich nur um einen Methodenaufruf handelt und kein Garbage Collector erforderlich ist.quelle