2010-01-26 9 views
55

¿Hay un formato de estilo de fecha php() equivalente en Java? Quiero decir, en php puedo usar barras invertidas para escapar de los personajes y tratarlos literalmente. Es decir. aaaa \ y \ e \ a se convertiría en año 2010. No encontré nada similar en Java, todos los ejemplos se refieren solo a los formatos de fecha incorporados.Formato de fecha de Java, incluidos los caracteres adicionales

En particular, trato con los selectores de fecha JCalendar y su propiedad dateFormatString.

Lo necesito porque en mi localidad se requiere escribir todo tipo de cosas adicionales en formato de fecha, como d. (para el día) después de días parte, m. (durante años) después de años, etc. En el peor de los casos, podría usar string replace o regexp, pero ¿tal vez hay una manera más simple? ¡Gracias por adelantado!

Respuesta

107

Seguro, con el SimpleDateFormat puede incluir cadenas literales:

Dentro de las cadenas de patrones de fecha y hora, las letras no citadas de 'A' a 'Z' y de 'a' a 'z' se interpretan como letras de patrones que representan los componentes de una cadena de fecha u hora. El texto se puede cotizar usando comillas simples (') para evitar la interpretación. "''" representa una sola cita. Todos los demás personajes no son interpretados; simplemente se copian en la cadena de salida durante el formateo o se comparan con la cadena de entrada durante el análisis.

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

Súper, eso es exactamente lo que necesito. Sorprendentemente, no he encontrado algo tan simple en ninguno de los numerosos ejemplos que busqué en la web :) ¡Muchas gracias! – Sejanus

+1

¿Cómo escapo el carácter de comillas? Estoy tratando de hacer algo con el formato mm '. Indicando por ejemplo 46 minutos como 46 '. – Sotti

+3

@Sotti: '46'''. El primero en escapar del segundo. – Thilo

7

Puede utilizar String.Format como se documenta en 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); 

Usted obtendrá más información aquí link text