8

指定されたロケール(またはデフォルトのロケール)のデフォルトの日付と時刻の形式パターン(文字列)を取得する方法を教えてください。

私がすでに見つけたもの(他の誰かに役立つかもしれません):

  1. デフォルトのロケールを取得する方法。

    Locale currentLocale= Locale.getDefault();
    System.out.print(currentLocale.toString());
    
    Result is "en_US"
    
  2. 小数点の取得方法。

    DecimalFormatSymbols decimalFormatSymbols =
                                         new DecimalFormatSymbols(currentLocale);
    System.out.print(decimalFormatSymbols.getDecimalSeparator());
    
    Result is "."
    
  3. デフォルトの日付と時刻の書式パターン (文字列) を取得する方法;

    (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".
4

2 に答える 2

3

アップデート

ロシアのクマが質問の更新で言及しているように、フォーマット文字列を返すtoLocalizedPattern()メソッドがあります。SimpleDateFormat

元の答え

SimpleDateFormatプライベート コンストラクターで次のコードを使用します。

...
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パッケージの一部です。

于 2012-05-12T06:21:03.023 に答える
0

DateFormatあなたが望むのは、クラスを使用することだと思います。getDateInstance(int, Locale)メソッドを確認してください。

于 2012-05-12T06:15:52.313 に答える