每当我想将日期/时间格式打印为易于阅读的格式时,IDE都会建议我使用以下一种方式
getDateInstance()
getDateTimeInstance()
getTimeInstance()
但是,大多数情况下,应用不同的int style
不能满足我的要求。最后,我需要定义自己的内容。
private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// January 2
return new SimpleDateFormat("MMMM d");
}
};
如果我也想支持非英语,这给我带来麻烦。例如,对于中国市场,我需要使用单独的格式。
private static final ThreadLocal<SimpleDateFormat> dateFormatForChineseThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// 1月2日
return new SimpleDateFormat("MMMMd日");
}
};
我的代码将以以下内容结束
public String dateString() {
if (chinese user) {
return dateFormatForChineseThreadLocal.get().format(calendar.getTime());
}
return dateFormatThreadLocal.get().format(calendar.getTime());
}
这使维护工作变得困难。我想知道是否有更好的方法来针对不同的本地化自定义日期/时间显示格式?
答案 0 :(得分:1)
在对应用进行本地化时,通常会以strings.xml
为应用支持的每种语言创建/src/main/res/
文件,其中values/
主要包含英文文件,而values-de
或{ {1}}例如德语或中文。当您在其中定义格式的字符串资源时,只需读取该格式并将其传递给日期格式器即可。
这样,您可以简单地添加新语言,而无需更改代码中的任何行。