Je sais que cela va me donner le jour du mois sous forme de nombre ( ,
, `` ) :
Mais comment vous mettre en forme le jour du mois à dire ,
ou `` en Java ?
Je sais que cela va me donner le jour du mois sous forme de nombre ( ,
, `` ) :
Mais comment vous mettre en forme le jour du mois à dire ,
ou `` en Java ?
Il n’y a rien dans le JDK pour cela.
J’ai ne fonctionne pas cela par un compilateur, par conséquent peut-être des erreurs, mais vous voyez l’idée.
EDIT : J’ai vu certains accès rapide vers le bas de la voix dans un premier temps. Probablement à cause de l’inefficacité perçue. Même chose, mais moins susceptibles d’offenser :
private String getCurrentDateInSpecificFormat(Calendar currentCalDate) {
String dayNumberSuffix = getDayNumberSuffix(currentCalDate.get(Calendar.DAY_OF_MONTH));
DateFormat dateFormat = new SimpleDateFormat(" d'" + dayNumberSuffix + "' MMMM yyyy");
return dateFormat.format(currentCalDate.getTime());
}
private String getDayNumberSuffix(int day) {
if (day >= 11 && day <= 13) {
return "th";
}
switch (day % 10) {
case 1:
return "st";
case 2:
return "nd";
case 3:
return "rd";
default:
return "th";
}
}
Si vous essayez d'être conscient de l'i18n la solution obtenir encore plus compliqué.
Le problème est que dans d'autres langues, le suffixe peut dépendre non seulement sur le nombre lui-même, mais aussi sur le nom qu'il compte. Par exemple en russe, il serait "2-ой день", mais "2-ая неделя" (il s'agit de signifier "2ème journée", mais "2ème semaine"). Ce n'est pas valable si le formatage jours seulement, mais en un peu plus de cas générique, vous devez être conscient de la complexité.
Je pense que la solution sympa (je n'ai pas eu le temps de réellement mettre en œuvre) serait d'étendre SimpleDateFormetter à appliquer Local-conscient MessageFormat avant de passer à la classe parent. De cette façon, vous serait en mesure de soutenir disons que pour le mois de Mars formats %M pour obtenir "3-rd", %MM pour obtenir "03-rd" et %MMM pour obtenir des "tiers". De l'extérieur de la classe ressemble régulière SimpleDateFormatter, mais prend en charge plusieurs formats. Aussi si ce modèle serait par erreur appliqué par la régularité de la SimpleDateFormetter le résultat serait mal mis en forme, mais encore lisible.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.