L'affichage AM et PM en minuscule après le formatage de la date
Après le formatage d'un datetime, l'heure s'affiche AM ou PM en majuscules, mais je le veux en minuscules comme am ou pm.
C'est mon code:
public class Timeis {
public static void main(String s[]) {
long ts = 1022895271767L;
String st = null;
st = new SimpleDateFormat(" MMM d 'at' hh:mm a").format(ts);
System.out.println("time is " + ts);
}
}
st.toLowerCase()
va le faire et il n'y a pas de moyen plus facile.- Le problème, c'est que, comme le mois et le jour des noms, AM/PM marqueur des paramètres régionaux spécifiques, il ne peut faire sens dans certaines langues, à force tout en bas de casse (en laissant de côté le fait que certaines langues suffit d'utiliser l'horloge de 24 heures pour tout et n'ont pas vraiment de conditions pour l'AM et PM à tous).
Vous devez vous connecter pour publier un commentaire.
Malheureusement la norme des méthodes de formatage ne pas vous laisser faire ça. Ni ne Joda. Je pense que vous allez avoir à traiter votre date formatée par un simple post-format remplacer.
Vous pouvez utiliser le
replaceAll()
méthode qui utilise regepxs, mais je pense que le ci-dessus est peut-être suffisant. Je suis pas faire une couverturetoLowerCase()
depuis qui pourrait bousiller la mise en forme si vous modifiez la chaîne de format dans le futur pour contenir (dire) des noms de mois ou similaire.EDIT: James Jithin de la solution semble beaucoup mieux, et la bonne façon de le faire (comme indiqué dans les commentaires)
James Jithin
est parfaite pour le faire.timeStr = timeStr.toLowerCase(Locale.UK);
Cela fonctionne
Locale
dansSimpleDateFormate
, à l'aide deDateFormatSymbols
mess it up. Vous serait probablement nécessaire d'ensemble de tous les symboles, et pas seulement am/pm." "
avec""
, e.g hh:mm pour hh:mmaEssayez ceci:
Bien que vous pourriez être en mesure de créer un format personnalisé comme détaillé ici et ici
Malheureusement hors de la boîte l'AM et PM ne semblent pas être personnalisables dans le standard de la classe SimpleDateFormat
Si vous ne voulez pas faire de substitution de chaîne, et sont à l'aide de Java 8
javax.time
:Il est nécessaire de créer manuellement une
DateTimeFormatter
(précisant les pièces individuelles), comme il n'y a pas de symbole en forme de minuscules am/pm. Vous pouvez utiliserappendPattern
avant et après.Je crois qu'il n'est pas possible de remplacer la valeur par défaut am/pm symboles, rendant c'est la seule manière de faire de la chaîne de remplacer sur la chaîne finale.
James de réponse est excellent si vous voulez un style différent des autres que par défaut am, pm. Mais je crains que vous devez correspondance entre les paramètres Régionaux et Régionaux spécifiques AM/PM mis à l'adoption de la dérogation. Maintenant, il vous suffit d'utiliser java intégré dans java.util.Classe de mise en forme. Ainsi, un simple exemple ressemble à ceci:
Il donne:
À noter que si vous voulez en majuscules, il suffit de remplacer "%1$tp" par "%1$Tp". Vous pouvez trouver plus de détails à http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#dt.
juste ajouter
toLowarCase()
comme ceet
toUpperCase()
si vous voulez en majuscules//sortie => 06/18/2019 h (HNP),
Locale.UK => am ou pm;
Paramètres régionaux.NOUS => AM ou PM; essayez différents paramètres régionaux pour répondre à vos besoins (défaut, etc.)