2012-05-12 38 views
8

Có thể cho tôi biết làm cách nào để nhận mẫu định dạng ngày và giờ mặc định (Chuỗi) cho ngôn ngữ được chỉ định (hoặc ngôn ngữ mặc định).Làm thế nào tôi có thể nhận được mẫu định dạng Ngày và Giờ mặc định

Những gì tôi đã tìm thấy (có thể có ích cho người khác):

  1. Làm thế nào để có được địa phương mặc định.

    Locale currentLocale= Locale.getDefault(); 
    System.out.print(currentLocale.toString()); 
    
    Result is "en_US" 
    
  2. Cách nhận dấu phân cách thập phân.

    DecimalFormatSymbols decimalFormatSymbols = 
                new DecimalFormatSymbols(currentLocale); 
    System.out.print(decimalFormatSymbols.getDecimalSeparator()); 
    
    Result is "." 
    
  3. Cách lấy mẫu Định dạng ngày và giờ mặc định (Chuỗi);

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

Thanks a lot.

UPD: Tìm thấy giải pháp:

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

kiểm tra câu trả lời của tôi được cung cấp tại http://stackoverflow.com/questions/10204291/convert-time-to-millisecond-and-find-out-time-period-in-java-or-android/10204628#10204628 – Khan

Trả lời

3

Cập nhật

Như Nga Gấu đề cập đến trong bản cập nhật của mình cho câu hỏi đó là một phương pháp toLocalizedPattern() trong SimpleDateFormat mà trả về chuỗi định dạng.

Original câu trả lời

SimpleDateFormat sử dụng đoạn mã sau trong đó là xây dựng tư nhân:

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

Vì vậy, các định dạng chuỗi thực tế có vẻ là trong một ResourceBundle truy cập thông qua các phương pháp LocaleData.getDateFormatData().

Rất tiếc, lớp LocaleData là một phần của gói nội bộ sun.util.resources.

+0

Johan, cảm ơn rất nhiều! –

+0

Nhưng tôi thấy rằng bạn đã tìm thấy giải pháp thực tế mà tôi đã bỏ lỡ trong SimpleDateFormat :-) –

+0

Câu trả lời của bạn dẫn tôi đến :-) –

Các vấn đề liên quan