Lors de l'affichage du jour du mois, il est souvent souhaitable d'inclure un indicateur ordinal pour désigner qu'il s'agisse du "1er", du "2ème", du "3ème", etc. Alors que SimpleDateFormat de Java fournit un moyen de formater le jour numérique du mois ("d"), il n'inclut pas les indicateurs ordinaux.
Pour formater le jour du mois avec un indicateur ordinal, vous pouvez utiliser une fonction personnalisée ou vous appuyer sur des bibliothèques externes. L'une de ces bibliothèques est Google Guava, qui propose une méthode appelée getDayOfMonthSuffix.
import static com.google.common.base.Preconditions.*; String getDayOfMonthSuffix(final int n) { checkArgument(n >= 1 && n <= 31, "illegal day of month: " + n); if (n >= 11 && n <= 13) { return "th"; } switch (n % 10) { case 1: return "st"; case 2: return "nd"; case 3: return "rd"; default: return "th"; } }
Dans cet exemple, getDayOfMonthSuffix prend un jour du mois en entrée et renvoie l'indicateur ordinal correspondant. Il gère les cas particuliers où le jour se termine par "11", "12" ou "13" pour renvoyer "th" au lieu de "st", "nd" ou "rd".
Utiliser cette méthode , vous pouvez désormais formater les jours du mois avec des indicateurs ordinaux :
SimpleDateFormat sdf = new SimpleDateFormat("MMMMM d"); int dayOfMonth = 21; String formattedDate = sdf.format(new Date()) + getDayOfMonthSuffix(dayOfMonth); System.out.println(formattedDate); // prints "January 21st"
Notez qu'il est important de prendre en compte les cas particuliers et les situations particulières lors du formatage des jours du mois avec des indicateurs ordinaux. Par exemple, le tableau mentionné dans la question contient une erreur pour les jours se terminant par « 7tn », « 17tn » et « 27tn ». Pour éviter de tels bugs, il est conseillé d'utiliser un code personnalisé robuste ou de s'appuyer sur des bibliothèques bien testées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!