如何为DateFormat配置模式getDateInstance()

时间:2010-10-26 18:40:36

标签: java

对于每种样式 - SHORT,MEDIUM,LONG和FULL,是否有任何方法可以为DateFormat的getDateInstance()返回的String值配置模式?

例如,DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US)将始终返回一个类似于1952年1月12日的值。我怎样才能在1952年1月12日获得此回报?

1 个答案:

答案 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

如果这不是您要找的内容,则应在问题中添加一些实际要求。我解决了你问的问题,但似乎有一个问题,你没有问你还在等待答案。

但显然这只会改变你明确覆盖的那些。