2013-05-01 5 views
6

Sto cercando di ottenere i giorni della settimana in tedesco utilizzando la funzione Calendario getDisplayNames() con le impostazioni internazionali tedesche.Impossibile ottenere i nomi dei giorni in lingue diverse dall'inglese

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

Invece ottengo il giorno della settimana nomi in inglese: Domenica, Lunedi, .... ecc
sto facendo qualcosa di sbagliato o semplicemente non funziona? Forse ha qualcosa a che fare con il toString() della mia console di debugger IDEA? Sto usando l'ultimo Intellij 12.1.2.

risposta

3

Usa, Locale.GERMAN o utilizzare new Locale("de"), invece di 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")); 

E 'utile passare attraverso il Javadocs per Locale(String) costruttore, che dice "Costruire un locale da un codice di linguaggio". Il codice lingua per il tedesco è "de" non "de_DE".

+0

Ho provato che, sebbene sia lo stesso della scrittura di nuove impostazioni locali (de_DE), i risultati sono gli stessi. – Snow

+0

* sebbene sia uguale alla scrittura di nuove impostazioni locali (de_DE) *, non è vero, per favore vedi la risposta di Evgeniy Dorofeev. – NINCOMPOOP

+0

Scusa se mi sono sbagliato, funziona per entrambi i tuoi suggerimenti, grazie. ma perché la sala non funziona per "de_DE"? – Snow

2

Locale è sbagliato, prova a

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

risultato

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

Locale con una sola arg significa Locale(String language)

2

Invece di utilizzare un'istanza della classe Calendar si utilizza il java.text. DateFormatSymbols per ottenere informazioni come i nomi dei mesi, i nomi dei giorni della settimana per una specifica localizzazione. Ecco un esempio per ottenere i nomi dei giorni feriali in Germania.

String[] weekdays = new DateFormatSymbols(Locale.GERMANY).getWeekdays(); 
for (int i = 0; i < weekdays.length; i++) { 
    System.out.println("weekday = " + weekdays[i]); 
}