web-dev-qa-db-de.com

holen Sie das Jahr aus Java.util.Date

Ich habe eine Datumsspalte in einer Cassandra-Säulenfamilie. Wenn ich Daten von dieser CF mithilfe der Java-API von datastax abrufe, kann dieses Datumsobjekt als Java.util.Date-Objekt verwendet werden.

Es hat eine getYear()-Methode, ist aber veraltet. Der entsprechende Javadoc sagt:

Ab JDK Version 1.1 ersetzt durch Calendar.get (Calendar.YEAR) - 1900.

Wie kann ich die Attribute für Jahr, Monat und Tag aus diesem Datumsobjekt richtig abrufen?

12

Könntest du es wie Tihs versuchen?

      // create a calendar
      Calendar cal = Calendar.getInstance();
      cal.setTime(datetime);  //use Java.util.Date object as arguement
      // get the value of all the calendar date fields.
      System.out.println("Calendar's Year: " + cal.get(Calendar.YEAR));
      System.out.println("Calendar's Month: " + cal.get(Calendar.MONTH));
      System.out.println("Calendar's Day: " + cal.get(Calendar.DATE));

Wie in Javadocs erwähnt; 

@Deprecated public int getYear () Veraltet. Ab der JDK-Version 1.1. ersetzt durch Calendar.get (Calendar.YEAR) - 1900. Gibt einen Wert zurück, der ist das Ergebnis der Subtraktion von 1900 von dem Jahr, das oder .__ enthält. beginnt mit dem Zeitpunkt, der durch dieses Date-Objekt dargestellt wird, als in der lokalen Zeitzone interpretiert. Rückgabe: das Jahr, das durch .__ dargestellt wird. dieses Datum minus 1900.

30
Semih Eker

Eine gute Option ist, das Datumsformat wie folgt zu verwenden:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy");
Date             date = sdf1.parse(datetime);
String           year = sdf2.format(date);
1
Rakesh KR

verwenden Sie das LocalDate-Objekt in Java8

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int year  = localDate.getYear();
int month = localDate.getMonthValue();
int day   = localDate.getDayOfMonth();
1
Ammar Bozorgvar

Um die Datums- und Uhrzeitfelder abzurufen, können Sie diesen Code verwenden:

DateFormat.getDateTimeInstance().getCalendar().get(DateFormat.MONTH_FIELD)

Ersetzen Sie einfach MONTH_FIELD durch ein anderes Zeichen wie "DAY_OF_WEEK_FIELD", um den Wochentag abzurufen (ich denke "1" steht für Montag) oder "MINUTE_FIELD" für die aktuelle Minute usw. :)

0
Cyphrags