web-dev-qa-db-fra.com

Java: Obtenir le mois entier à partir de la date

Comment obtenir le mois sous forme d'entier à partir d'un objet Date (Java.util.Date)?

136
Muhd

Java.time (Java 8)

Vous pouvez également utiliser le package Java.time dans Java 8 et convertir votre objet Java.util.Date en un objet Java.time.LocalDate , puis simplement utiliser la méthode getMonthValue() .

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int month = localDate.getMonthValue();

Notez que les valeurs mensuelles sont ici données de 1 à 12 contrairement à cal.get(Calendar.MONTH) dans la réponse de adarshr qui donne les valeurs de 0 à 11.

Mais comme le dit Basil Bourque dans les commentaires, la méthode recommandée consiste à obtenir un objet Month enum avec la méthode LocalDate::getMonth

36
Ortomala Lokni
Java.util.Date date= new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
262
adarshr

Si vous utilisez Java 8 date api, vous pouvez l'obtenir directement sur une ligne!

LocalDate today = LocalDate.now();
int month = today.getMonthValue();
12
Ketan Chitale

Joda-Time

Alternativement, avec le Joda-TimeDateTime class.

//convert date to datetime
DateTime datetime = new DateTime(date);
int month = Integer.parseInt(datetime.toString("MM"))

…ou…

int month = dateTime.getMonthOfYear();
7
ssoward

Si vous ne pouvez pas utiliser le temps Joda et que vous vivez toujours dans le monde sombre :) (Java 5 ou inférieur), vous pourrez en profiter: 

Remarque: Assurez-vous que votre date est déjà faite par le format: jj/mm/aaaa

/**
Make an int Month from a date
*/
public static int getMonthInt(Date date) {

    SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
    return Integer.parseInt(dateFormat.format(date));
}

/**
Make an int Year from a date
*/
public static int getYearInt(Date date) {

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
    return Integer.parseInt(dateFormat.format(date));
}
2
Badr DRAIFI
Date mDate = new Date(System.currentTimeMillis());
mDate.getMonth() + 1

La valeur renvoyée commence à 0, vous devez donc en ajouter un au résultat.

0
twlkyao