Siempre que quiero imprimir el formato de fecha / hora a una forma legible por humanos, IDE se me recomienda utilizar uno de la siguiente manera
getDateInstance()
getDateTimeInstance()
getTimeInstance()
Sin embargo, la mayoría de las veces, aplicando diferentes int style
no cumple con mis requisitos. Terminar, tengo que definir mi propia.
private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// January 2
return new SimpleDateFormat("MMMM d");
}
};
Esto crea un problema para mí, si quiero apoyar la no-Inglés también. Por ejemplo, para el mercado chino, necesito utilizar el formato separado.
private static final ThreadLocal<SimpleDateFormat> dateFormatForChineseThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// 1月2日
return new SimpleDateFormat("MMMMd日");
}
};
Mi código va a terminar con la siguiente
public String dateString() {
if (chinese user) {
return dateFormatForChineseThreadLocal.get().format(calendar.getTime());
}
return dateFormatThreadLocal.get().format(calendar.getTime());
}
Este trabajo de mantenimiento hacen difícil. Me preguntaba, ¿hay una mejor manera, para personalizar la fecha / formato de visualización de la hora de diferente localización?
Al localizar su aplicación por lo general, crear strings.xml
archivos para cada idioma de su aplicación apoyará en /src/main/res/
donde values/
contiene los archivos en su mayoría en inglés y en values-de
o values-cn
alemán o chino, por ejemplo. Cuando se define un recurso de cadena con el formato de ahí, se puede leer simplemente eso y pasar a ese formato de la fecha de formateador.
Con esto, simplemente puede añadir nuevos idiomas sin cambiar ninguna línea en su código.