web-dev-qa-db-fra.com

Java format de date - y compris les caractères supplémentaires

Existe-t-il un équivalent du formatage de style php date () en Java? Je veux dire, en php, je peux inverser les caractères d'échappement pour les faire traiter littéralement. C'est à dire. aaaa\y\e\a\r deviendrait 2010 année . Je n'ai rien trouvé de similaire en Java, tous les exemples ne concernent que les formats de date intégrés.

En particulier, je m'occupe de JCalendar sélecteurs de date et de leur propriété dateFormatString .

J'en ai besoin car dans ma région, il est nécessaire d'écrire toutes sortes de choses supplémentaires au format date, comme d. (pour le jour) après la partie jours, m. (pendant des années) après des années et ainsi de suite. Dans le pire des cas, je pourrais utiliser le remplacement de chaîne ou l'expression rationnelle, mais peut-être qu'il existe un moyen plus simple? Merci d'avance!

72
Sejanus

Bien sûr, avec SimpleDateFormat vous pouvez inclure des chaînes littérales:

Dans les chaînes de modèle de date et d'heure, les lettres non citées de 'A' à 'Z' et de 'a' à 'z' sont interprétées comme des lettres de modèle représentant les composants d'une chaîne de date ou d'heure. Le texte peut être cité entre guillemets simples (') pour éviter toute interprétation. "'" "représente une seule citation. Tous les autres caractères ne sont pas interprétés; ils sont simplement copiés dans la chaîne de sortie lors du formatage ou mis en correspondance avec la chaîne d'entrée lors de l'analyse.

 "hh 'o''clock' a, zzzz"    12 o'clock PM, Pacific Daylight Time
136
Thilo

Juste pour être complet, Java 8's DateTimeFormatter prend également en charge ceci:

DateTimeFormatter.ofPattern("yyyy 'year'");
11
Mark Jeronimus

Vous pouvez utiliser String.format comme indiqué dans Java.util.Formatter :

Calendar c = ...;
String s = String.format("%tY year", c);
// -> s == "2010 year" or whatever the year actually is
7
R Samuel Klatchko