Sempre que eu quero imprimir formato de data / hora para um formato legível, IDE irá recomendar-me a usar um dos seguinte maneira
getDateInstance()
getDateTimeInstance()
getTimeInstance()
No entanto, na maioria das vezes, aplicando diferentes int style
não cumprir a minha obrigação. Acabar, eu preciso definir minha própria.
private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// January 2
return new SimpleDateFormat("MMMM d");
}
};
Isso cria um problema para mim, se eu quiser apoiar non-Inglês também. Por exemplo, para o mercado chinês, eu preciso usar o formato separado.
private static final ThreadLocal<SimpleDateFormat> dateFormatForChineseThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// 1月2日
return new SimpleDateFormat("MMMMd日");
}
};
Meu código vai acabar com o seguinte
public String dateString() {
if (chinese user) {
return dateFormatForChineseThreadLocal.get().format(calendar.getTime());
}
return dateFormatThreadLocal.get().format(calendar.getTime());
}
Este trabalho de manutenção make difícil. Eu estava pensando, há uma maneira melhor, para personalizar data / formato das horas para localização diferente?
Quando você localizar o seu aplicativo que você normalmente criar strings.xml
arquivos para cada idioma sua aplicação deve apoiar em /src/main/res/
, onde values/
contém arquivos principalmente inglês e values-de
ou values-cn
alemão ou chinês, por exemplo. Quando você define um recurso de cadeia com o formato de lá, você pode simplesmente ler isso e passar esse formato para a sua data de formatador.
Com isso, você pode simplesmente adicionar novas línguas sem alterar qualquer linha em seu código.