2010-01-26 12 views
55

Esiste un equivalente di formattazione di stile date() php in Java? Voglio dire, in PHP posso backslash-escape caratteri per averli trattati letteralmente. Cioè yyyy \ y \ e \ a \ r diventerebbe anno 2010. Non ho trovato nulla di simile in Java, tutti gli esempi riguardano solo i formati di data incorporati.Formato data Java - inclusi caratteri aggiuntivi

In particolare, mi occupo dei raccoglitori di date JCalendar e della loro data dataFormatString proprietà.

Ne ho bisogno perché nel mio locale è necessario scrivere tutti i tipi di materiale aggiuntivo nel formato data, come d. (per giorno) dopo giorni parte, m. (per anni) dopo anni parte e così via. Nel peggiore dei casi potrei usare string replace o regexp ma forse c'è un modo più semplice? Grazie in anticipo!

risposta

107

Certo, con il SimpleDateFormat è possibile includere stringhe letterali:

All'interno di stringhe di pattern di data e ora, le lettere non quotate da "A" a "Z" e da "a" a "z" vengono interpretate come lettere di pattern che rappresentano i componenti di una stringa di data o ora. Il testo può essere citato usando virgolette singole (') per evitare l'interpretazione. "''" rappresenta una singola citazione. Tutti gli altri personaggi non sono interpretati; vengono semplicemente copiati nella stringa di output durante la formattazione o confrontati con la stringa di input durante l'analisi.

"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time 
+0

Super, questo è esattamente quello che mi serve. Sorprendentemente non ho trovato una cosa così semplice in nessuno dei numerosi esempi che ho sfogliato nel web :) Grazie mille! – Sejanus

+1

Come faccio a sfuggire al carattere di citazione? Sto provando a fare qualcosa con il formato mm '. Indicando per esempio 46 minuti come 46 '. – Sotti

+3

@Sotti: '46'''. Il primo a sfuggire al secondo. – Thilo

7

È possibile utilizzare String.Format come documentato in java.util.Formatter:

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

java.text.SimpleDateFormat

SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
String formattedDate = formatter.format(date); 

Otterrete maggiori informazioni qui link text