Ich muss das aktuelle Jahr in Java als Ganzzahl bestimmen. Ich könnte einfach verwenden java.util.Date()
aber sie ist veraltet.
Antworten
Zu viele Anzeigen?Wenn Sie die Zeit-API von Java 8 verwenden (vorausgesetzt, Sie sind damit einverstanden, das Jahr in der Standardzeitzone Ihres Systems zu erhalten), können Sie Folgendes verwenden ザ Year::now
Methode :
int year = Year.now().getValue();
Dies ist am einfachsten (unter Verwendung des Kalenders, sorry):
int year = Calendar.getInstance().get(Calendar.YEAR);
Außerdem gibt es die neue Datum und Uhrzeit API JSR sowie Joda Zeit
Tl;dr
ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) )
.getYear()
Zeitzone
Die Antwort por Raffi Khatchadourian zeigt klugerweise, wie man das neue java.time-Paket in Java 8. Aber diese Antwort geht nicht auf die kritische Frage der Zeitzone bei der Bestimmung eines Datums ein.
int year = LocalDate.now().getYear();
Dieser Code hängt von der aktuellen Standardzeitzone der JVM ab. Die Standardzeitzone wird verwendet, um das heutige Datum zu bestimmen. Denken Sie zum Beispiel daran, dass im Moment nach Mitternacht in Paris das Datum in Montréal immer noch "gestern" ist.
Ihre Ergebnisse können also davon abhängen, auf welchem Rechner es läuft, ob ein Benutzer/Administrator die Zeitzone des Host-Betriebssystems ändert oder ob Java-Code verwendet wird. in jedem Augenblick den aktuellen Standard der JVM zu ändern. Besser ist es, die Zeitzone anzugeben.
Übrigens, verwenden Sie immer richtige Namen für Zeitzonen como von der IANA definiert . Verwenden Sie niemals die Codes mit 3-4 Buchstaben, die weder genormt noch eindeutig sind.
java.time
Beispiel in java.time von Java 8.
int year = ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) ).getYear() ;
Joda-Time
Eine Idee wie oben, aber unter Verwendung der Joda-Time 2.7 Bibliothek.
int year = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).getYear() ;
Erhöhend/vermindernd Jahr
Wenn Ihr Ziel darin besteht, ein Jahr auf einmal zu überspringen, brauchen Sie die Jahreszahl nicht zu extrahieren. Sowohl Joda-Time als auch java.time haben Methoden zum Addieren/Subtrahieren von Jahreszahlen auf einmal. Und diese Methoden sind intelligent, sie behandeln Sommerzeit und andere Anomalien.
Beispiel in java.time .
ZonedDateTime zdt =
ZonedDateTime
.now( ZoneId.of( "Africa/Casablanca" ) )
.minusYears( 1 )
;
Beispiel in Joda-Time 2.7.
DateTime oneYearAgo = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).minusYears( 1 ) ;
- See previous answers
- Weitere Antworten anzeigen