Ich habe es versucht
%Vor%aber es gibt mir Kompilierzeit Fehler
Nicht-statische Methode 'get (int)' kann nicht aus einem statischen Kontext referenziert werden.
Ich rufe diese Methode von der Call-Methode der beobachtbaren.
%Vor% Ich habe auch (new Date()).getYear();
gesehen, aber es ist veraltet.
Die anderen Antworten verwenden die problematischen alten Datum-Uhrzeit-Klassen wie Kalender. Diese werden durch die Klassen java.time ersetzt. Ältere Versionen von Android finden Sie in den ThreeTen-Backport- und ThreeTenABP-Projekten.
Year
class Statt nur ganze Zahlen herumzureichen, um ein Jahr darzustellen, gehen Sie um Objekte herum. Nämlich die Year
Klasse.
Für das aktuelle Jahr ist eine Zeitzone erforderlich. Für jeden Moment variiert das Datum von Zone zu Zone. So ist es möglich, dass Pacific/Auckland
2018 ist, während America/Montreal
gleichzeitig 2017 ist.
Es ist besser, die gewünschte / erwartete Zone explizit zu übergeben. Ohne Angabe erhalten Sie implizit die aktuelle Standardzeitzone der JVM. Dieser Standard kann sich während der Laufzeit jederzeit ändern, ist also nicht zuverlässig.
%Vor%Wenn Sie eine Ganzzahl benötigen, extrahieren Sie den Wert.
%Vor% Das Framework java.time ist in Java integriert 8 und später. Diese Klassen ersetzen die problematischen alten Legacy Datum-Uhrzeit-Klassen wie java.util.Date
, Calendar
, & amp; SimpleDateFormat
.
Das Joda-Time Projekt, jetzt in Wartungsmodus , rät Migration zum java.time Klassen.
Weitere Informationen finden Sie im Oracle-Lernprogramm . Und suchen Sie nach Stack Overflow für viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .
Wo erhalten Sie die Klassen java.time?
sollten Sie
verwenden Calendar.getInstance().get(Calendar.YEAR)
;
Sie können Calendar.getInstance() .get(Calendar.YEAR )
auch für Kotlin Sprachzwecke verwenden