2012-05-12 63 views
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". 
+0

檢查我的答案在http://stackoverflow.com/questions/10204291/convert-time-to-millisecond-and-find-out-time-period-in-java-or-android/10204628#10204628 – Khan

回答

3

更新

由於俄羅斯熊提到在他更新的問題存在SimpleDateFormat一個toLocalizedPattern()方法返回的格式字符串。

原來的答覆

SimpleDateFormat使用下面的代碼在它的私有構造:

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

所以實際的格式字符串似乎是在通過LocaleData.getDateFormatData()方法訪問的ResourceBundle

不幸的是,LocaleData類是內部sun.util.resources包的一部分。

+0

Johan,非常感謝! –

+0

但是我發現你找到了我在SimpleDateFormat中錯過的實際解決方案:-) –

+0

你的答案讓我想起它:-) –

相關問題