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?Wie einige Leute oben geantwortet haben:
Wenn Sie die Variable später verwenden wollen, verwenden Sie sie besser:
int year;
year = Calendar.getInstance().get(Calendar.YEAR);
Wenn Sie das Jahr nur für eine Bedingung benötigen, sollten Sie es nutzen:
Calendar.getInstance().get(Calendar.YEAR)
Zum Beispiel in einem do while, das prüft, ob das eingeführte Jahr nicht kleiner als das aktuelle Jahr-200 oder größer als das aktuelle Jahr ist (könnte das Geburtsjahr sein):
import java.util.Calendar;
import java.util.Scanner;
public static void main (String[] args){
Scanner scannernumber = new Scanner(System.in);
int year;
/*Checks that the year is not higher than the current year, and not less than the current year - 200 years.*/
do{
System.out.print("Year (Between "+((Calendar.getInstance().get(Calendar.YEAR))-200)+" and "+Calendar.getInstance().get(Calendar.YEAR)+") : ");
year = scannernumber.nextInt();
}while(year < ((Calendar.getInstance().get(Calendar.YEAR))-200) || year > Calendar.getInstance().get(Calendar.YEAR));
}
In meinem Fall funktioniert keine der oben genannten Möglichkeiten. Nachdem ich viele Lösungen ausprobiert hatte, fand ich die folgende und sie funktionierte für mich
import java.util.Scanner;
import java.util.Date;
public class Practice
{
public static void main(String[] args)
{
Date d=new Date();
int year=d.getYear();
int currentYear=year+1900;
System.out.println(currentYear);
}
}
In Java Version 8+ kann (wird empfohlen) die java.time Bibliothek. ISO 8601 legt die Standardschreibweise für Datumsangaben fest: YYYY-MM-DD
y java.time.Instant
verwendet es, so dass (für UTC
):
import java.time.Instant;
int myYear = Integer.parseInt(Instant.now().toString().substring(0,4));
P.S. nur für den Fall (und kurz für das Erhalten String
ではなく int
), unter Verwendung von Calendar
sieht besser aus und kann zonenabhängig gemacht werden.
Ich verwende spezielle Funktionen in meiner Bibliothek, um mit Tagen/Monaten/Jahreszahlen zu arbeiten -
int[] int_dmy( long timestamp ) // remember month is [0..11] !!!
{
Calendar cal = new GregorianCalendar(); cal.setTimeInMillis( timestamp );
return new int[] {
cal.get( Calendar.DATE ), cal.get( Calendar.MONTH ), cal.get( Calendar.YEAR )
};
};
int[] int_dmy( Date d ) {
...
}
- See previous answers
- Weitere Antworten anzeigen