Comment savoir combien de jours a un mois particulier d'une année particulière?
String date = "2010-01-19";
String[] ymd = date.split("-");
int year = Integer.parseInt(ymd[0]);
int month = Integer.parseInt(ymd[1]);
int day = Integer.parseInt(ymd[2]);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month);
int daysQty = calendar.getDaysNumber(); // Something like this
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont maintenant héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir le didacticiel d'Oracle .Réponses:
Java 8 et versions ultérieures
@Warren M. Nocos. Si vous essayez d'utiliser la nouvelle API de date et d'heure de Java 8 , vous pouvez utiliser
java.time.YearMonth
class. Voir le didacticiel Oracle .Test: essayez un mois dans une année bissextile:
Java 7 et versions antérieures
Créez un calendrier, définissez l'année et le mois et utilisez
getActualMaximum
Test : essayez un mois dans une année bissextile:
la source
Code pour java.util.Calendar
Si vous devez utiliser
java.util.Calendar
, je suppose que vous voulez:Code pour Joda Time
Personnellement, cependant, je suggère d'utiliser Joda Time au lieu de
java.util.{Calendar, Date}
commencer, auquel cas vous pouvez utiliser:Notez que plutôt que d'analyser les valeurs de chaîne individuellement, il serait préférable d'obtenir l'API de date / heure que vous utilisez pour l'analyser. Dans
java.util.*
vous pourriez utiliserSimpleDateFormat
; dans Joda Time, vous utiliseriez un fichierDateTimeFormatter
.la source
Vous pouvez utiliser la
Calendar.getActualMaximum
méthode:la source
java.time.LocalDate
Depuis Java 1.8, vous pouvez utiliser la méthode
lengthOfMonth
surjava.time.LocalDate
:la source
la source
C'est la manière mathématique:
Par année, mois (1 à 12):
la source
J'irais pour une solution comme celle-ci:
Si le mois n'est pas février (92% des cas), cela dépend uniquement du mois et il est plus efficace de ne pas impliquer l'année. De cette façon, vous n'avez pas besoin d'appeler la logique pour savoir s'il s'agit d'une année bissextile et vous n'avez pas besoin d'obtenir l'année dans 92% des cas. Et c'est toujours un code propre et très lisible.
la source
En Java8, vous pouvez utiliser get ValueRange à partir d'un champ d'une date.
Cela vous permet de paramétrer sur le terrain.
la source
Aussi simple que cela, pas besoin d'importer quoi que ce soit
la source
la source
android.util.MonthDisplayHelper
)la source
la source
L'utilisation d'une
Calendar
API obsolète doit être évitée.Dans Java8 ou version supérieure, cela peut être fait avec
YearMonth
.Exemple de code:
la source
Call requires API level 26 (current min is 21): java.time.YearMonth#lengthOfMonth
Rendons les choses aussi simples si vous ne voulez pas coder en dur la valeur de l'année et du mois et que vous voulez prendre la valeur de la date et de l'heure actuelles:
la source
Vous pouvez utiliser la méthode Calendar.getActualMaximum:
Et mois-1 est En raison du mois prend son numéro d'origine du mois tandis que dans la méthode prend l'argument comme ci-dessous dans Calendar.class
Et le (champ int) est comme ci-dessous.
la source
La méthode suivante vous fournira le nombre de jours dans un mois particulier
la source
Une variance optimale et performante:
Pour plus de détails sur l'algorithme de saut, cliquez ici
la source
la source
CA marchait bien pour moi.
Ceci est un exemple de sortie
la source
la source