Java 为不同的本地化定制日期/时间显示格式的好方法有哪些
每当我想将日期/时间格式打印成人类可读的格式时,IDE都会建议我使用以下方法之一Java 为不同的本地化定制日期/时间显示格式的好方法有哪些,java,android,Java,Android,每当我想将日期/时间格式打印成人类可读的格式时,IDE都会建议我使用以下方法之一 getDateInstance() getDateTimeInstance() getTimeInstance() 然而,大多数时候,应用不同的int样式并不符合我的要求。最后,我需要定义我自己的 private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal <SimpleDa
getDateInstance()
getDateTimeInstance()
getTimeInstance()
然而,大多数时候,应用不同的int样式
并不符合我的要求。最后,我需要定义我自己的
private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal <SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
// January 2
return new SimpleDateFormat("MMMM d");
}
};
这使维护工作变得困难。我想知道,有没有更好的方法来定制不同本地化的日期/时间显示格式?当你本地化你的应用程序时,你通常会为你的应用程序支持的每种语言创建
字符串.xml
文件/src/main/res/
,其中values/
主要包含英文文件,例如values de
或values cn
德语或中文文件。当您使用您的格式定义一个字符串资源时,您可以简单地读出它并将该格式传递给您的日期格式化程序
有了它,您只需添加新的语言,而无需更改代码中的任何一行。使用以下选项之一。如果不能做到这一点,您可能需要使用,并且必须为所有受支持的区域设置提供格式。不幸的是,大多数情况下,预定义的格式不符合我们的UI要求。为什么不在strings.xml中定义格式?当您读取本地化字符串时,您可以将该格式传递给日期格式化程序,您就完成了?!通过这种方式,您始终具有可维护性,因为您为应用程序支持的语言提供了所有格式。是的。我错过了那一点。你能把这个方法作为答案吗?
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());
}