web-dev-qa-db-fra.com

obtenez l'année de Java.util.Date

J'ai une colonne de date dans une famille de colonnes Cassandra. Lorsque je récupère des données de ce CF en utilisant l'API Java datastax, cet objet de date peut être considéré comme un objet Java.util.Date.

Il a une méthode getYear() mais il est obsolète. Le javadoc correspondant dit:

À partir de la version 1.1 du JDK, remplacé par Calendar.get (Calendar.YEAR) - 1900.

Comment obtenir correctement les attributs année, mois et jour à partir de cet objet de date?

12

Pourriez-vous essayer comme ça?

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

Comme mentionné dans javadocs

@Deprecated public int getYear () Deprecated. À partir de la version 1.1 du JDK, remplacé par Calendar.get (Calendar.YEAR) - 1900. Renvoie une valeur qui est le résultat de la soustraction de 1900 de l'année qui contient ou commence par l'instant dans le temps représenté par cet objet Date, sous la forme interprété dans le fuseau horaire local. Retours: l'année représentée par cette date, moins 1900.

30
Semih Eker

Une bonne option consiste à utiliser le format de date comme suit:

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

utiliser l'objet LocalDate en 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

Pour récupérer les champs de date et heure, vous pouvez utiliser ce code:

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

Il suffit de remplacer MONTH_FIELD par un autre comme "DAY_OF_WEEK_FIELD" pour récupérer le jour de la semaine (je pense que "1" signifie lundi) ou "MINUTE_FIELD" pour la minute en cours, etc. :)

0
Cyphrags