对于每种样式 - SHORT,MEDIUM,LONG和FULL,是否有任何方法可以为DateFormat的getDateInstance()
返回的String值配置模式?
例如,DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US)
将始终返回一个类似于1952年1月12日的值。我怎样才能在1952年1月12日获得此回报?
答案 0 :(得分:2)
您可以使用SimpleDateFormat自定义自己的日期格式。
String formatted = new SimpleDateFormat("yyyy, MMM dd").format(new Date(52, 0, 12));
System.out.println(formatted); //prints "1952, Jan 12"
修改强>
好的,如果您只是尝试覆盖某些特定区域设置,则可以配置自己的DateFormatProvider:
class CustomDateFormatProvider extends DateFormatProvider {
public DateFormat getDateInstance(int style, Locale locale) {
if ( style == DateFormat.MEDIUM && Locale.US.equals(locale) ) {
return new SimpleDateFormat("yyyy, MMM dd");
}
//else do default behaviour
}
//...
}
可以使用Java Extension Mechanism安装。见LocaleServiceProvider。
如果这不是您要找的内容,则应在问题中添加一些实际要求。我解决了你问的问题,但似乎有一个问题,你没有问你还在等待答案。
但显然这只会改变你明确覆盖的那些。