382 Stimmen

Ganzzahliger Wert des aktuellen Jahres in Java abrufen

Ich muss das aktuelle Jahr in Java als Ganzzahl bestimmen. Ich könnte einfach verwenden java.util.Date() aber sie ist veraltet.

4voto

maral04 Punkte 319

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));
}

0voto

Ewan Makepeace Punkte 5308

Sie können das Ganze mit Integer-Mathematik machen, ohne dass Sie einen Kalender instanziieren müssen:

return (System.currentTimeMillis()/1000/3600/24/365.25 +1970);

An Neujahr kann es sein, dass ich ein oder zwei Stunden nicht da bin, aber ich habe nicht den Eindruck, dass das ein Problem ist.

0voto

Mayur Satav Punkte 849

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);

    }

}

-2voto

Alexei Martianov Punkte 2759

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.

-5voto

maxp Punkte 5224

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 ) { 
 ...
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X