Se stai usando Joda Time (e perché non sarebbe voi se avete qualsiasi E 'scelta quasi ottenuto in dotazione nel JDK 1.7) si potrebbe fare qualcosa di simile:?
String patternForStyleAndLocale = org.joda.time.format.DateTimeFormat.patternForStyle("S-", locale);
che purtroppo dà solo un anno a due cifre. Un lavoro in giro per questo sarebbe:
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");
}
E si potrebbe prendere in considerazione le cache in un ConcurrentHashMap<Locale, String>
.
La cosa bella di ottenere una data numerica come un modello pre-localizzate come questo è che non richiede ulteriori localizzazione più tardi, come si farebbe se si stesse utilizzando un modello come ad esempio:
"dd MMM yyyy" // UK: "25 Dec 2010" FRANCE: "25 déc. 2010" etc..
Tuttavia ... Ho appena notato dal tuo commento successivo che vuoi passare il pattern a JavaScript, che potrebbe risultare molto difficile dal momento che JS utilizza la formattazione di modelli diversi in Java (la data ISO per esempio è in Java e "yy-mm-dd"
in JS). Non ho provato a risolverlo, ma probabilmente utilizzerei un mapping di stringhe nel JS o Java per mappare semplicemente da modelli Java a JS. Dovresti conoscere in anticipo tutti i modelli che potresti incontrare per ognuna delle lingue.
perché non utilizzare la locale in "questo altro posto", invece del solo schema? –
Ciao Petal Ivanov, in realtà, voglio passare il pattern a Javascript quindi non posso usare le impostazioni internazionali. –