2013-05-01 29 views
6

Tôi đang cố gắng để có được những ngày trong tuần bằng tiếng Đức bằng cách sử dụng chức năng Lịch getDisplayNames() với ngôn ngữ Đức.Lịch không thể nhận được tên ngày bằng các ngôn ngữ khác với tiếng Anh

Calendar now = Calendar.getInstance(); 
Map<String,Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, new Locale("de_DE")); 

Thay vào đó tôi nhận được ngày của tên tuần bằng tiếng Anh: Chủ nhật, thứ Hai, .... vv
Tôi có làm gì sai hay nó chỉ đơn giản không hoạt động? Có lẽ nó có một cái gì đó để làm với toString() của giao diện điều khiển gỡ lỗi IDEA của tôi? Tôi đang sử dụng Intellij 12.1.2 mới nhất.

Trả lời

3

sử dụng, hoặc sử dụng Locale.GERMANnew Locale("de"), thay vì new Locale("de_DE")

Map<String,Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, 
      Calendar.LONG, Locale.GERMAN); 

Map<String,Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, 
      Calendar.LONG, new Locale("de")); 

Đó là hữu ích để đi qua Javadocs cho Locale(String) constructor, mà nói "Xây dựng một miền địa phương từ một mã ngôn ngữ". Mã ngôn ngữ của tiếng Đức là "de" không phải "de_DE".

+0

Tôi đã thử rằng, mặc dù nó giống như viết mới Locale (de_DE), kết quả là như nhau. – Snow

+0

* mặc dù nó giống như viết mới Locale (de_DE) *, không có nó không, xin vui lòng xem câu trả lời của Evgeniy Dorofeev. – NINCOMPOOP

+0

Xin lỗi tôi đã nhầm lẫn, Nó hoạt động cho cả hai đề xuất của bạn, cảm ơn. nhưng tại sao hội trường nó không hoạt động cho "de_DE"? – Snow

2

Locale là sai, hãy thử

Map<String, Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, 
      Calendar.LONG, new Locale("de")); 

kết quả

{Donnerstag=5, Mittwoch=4, Freitag=6, Dienstag=3, Samstag=7, Sonntag=1, Montag=2} 

Locale với một arg nghĩa Locale(String language)

2

Thay vì sử dụng một thể hiện của lớp Calendar bạn sử dụng java.text. DateFormatSymbols để nhận thông tin như tên tháng, tên ngày trong tuần cho một miền địa phương cụ thể. Đây là một ví dụ để lấy tên ngày trong tuần tại Đức.

String[] weekdays = new DateFormatSymbols(Locale.GERMANY).getWeekdays(); 
for (int i = 0; i < weekdays.length; i++) { 
    System.out.println("weekday = " + weekdays[i]); 
} 
Các vấn đề liên quan