有人可以告诉我如何获取指定语言环境(或默认语言环境)的默认日期和时间格式pattern(String)。

我已经发现的内容(可能对其他人有用):

  • 如何获取默认语言环境。

    Locale currentLocale= Locale.getDefault();
    System.out.print(currentLocale.toString());
    
    Result is "en_US"
    
  • 如何获取小数点分隔符。

    DecimalFormatSymbols decimalFormatSymbols =
                                         new DecimalFormatSymbols(currentLocale);
    System.out.print(decimalFormatSymbols.getDecimalSeparator());
    
    Result is "."
    
  • 如何获取默认的日期和时间格式模式(字符串);

    (do something)
    System.out.print(something);
    And got at output something like this: "dd/mm/yyyy" or "hh:mm:ss"..
                                 or other values for specified locale.
    

  • 非常感谢。

    UPD:
    找到的解决方案:

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
    String dateLocalizedFormatPattern = simpleDateFormat.toLocalizedPattern();
    
    The result of System.out.print(dateLocalizedFormatPattern)
                                                 on my device is "M/d/yy h:mm a".
    

    最佳答案

    更新

    正如俄罗斯熊在他对问题的更新中提到的那样,toLocalizedPattern()中有一个SimpleDateFormat方法,该方法返回格式字符串。

    原始答案
    SimpleDateFormat在其私有(private)构造函数中使用以下代码:

    ...
    ResourceBundle r = LocaleData.getDateFormatData(loc);
    if (!isGregorianCalendar()) {
        try {
            dateTimePatterns = r.getStringArray(getCalendarName() + ".DateTimePatterns");
        } catch (MissingResourceException e) {
        }
    }
    if (dateTimePatterns == null) {
        dateTimePatterns = r.getStringArray("DateTimePatterns");
    }
    ...
    

    因此,实际的格式字符串似乎在通过ResourceBundle方法访问的LocaleData.getDateFormatData()中。

    不幸的是,LocaleData类是内部sun.util.resources包的一部分。

    关于java - 如何获得默认的日期和时间格式模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10561481/

    10-09 07:55