Si está utilizando Joda Time (y por qué no usted si tiene alguna Es la elección casi nos metieron en JDK 1.7) se podría hacer algo como esto:?
String patternForStyleAndLocale = org.joda.time.format.DateTimeFormat.patternForStyle("S-", locale);
que, desgraciadamente, sólo da un año de dos dígitos. Una forma de solucionar esto sería:
if (!org.apache.commons.lang.StringUtils.contains(patternForStyleAndLocale, "yyyy"))
{
// The default Joda pattern only has a two digit year for US and Europe, China etc - but we want four digit years
patternForStyleAndLocale = StringUtils.replace(patternForStyleAndLocale, "yy", "yyyy");
}
Y usted podría considerar el almacenamiento en caché en una ConcurrentHashMap<Locale, String>
.
Lo bueno de conseguir una fecha numérica como un patrón pre-localizada como esto es que no requiere ninguna localización más tarde, como lo haría si estuviera usando un patrón como:
"dd MMM yyyy" // UK: "25 Dec 2010" FRANCE: "25 déc. 2010" etc..
Sin embargo ... me acabo de dar cuenta de su comentario posterior que desea pasar el patrón a JavaScript - que podría ser muy difícil, ya que utiliza JS patrón diferente formato a Java (ISO, por ejemplo, la fecha es "yyyy-MM-dd"
en Java y en "yy-mm-dd"
JS). No intenté resolverlo, pero probablemente usaría un mapeo de cadenas en JS o Java para simplemente mapear desde patrones Java a JS. Tendría que conocer cada uno de los patrones que podría encontrar para cada uno de los idiomas antes del curso.
¿por qué no usar la configuración regional en "este otro lugar", en lugar de solo el patrón? –
Hola Petal Ivanov, en realidad, quiero pasar el patrón a Javascript, así que no puedo usar la configuración regional. –