2010-07-28 4 views

Odpowiedz

4

locale nie precyzuje, czy 12 lub 24 godzinny format czasu ar e preferowany. Zamiast tego, formaty daty specyficzne dla regionu są obsługiwane przez ustawienia narodowe definiujące formaty bezpośrednio.

  • Jeśli chcesz po prostu użyć „Locale” preferowany format czasu, zadzwoń do jednego z trzech DateFormat.getTimeInstance(...) metody statyczne, oraz wykorzystanie cokolwiek DateFormat powraca.

  • Jeśli masz SimpleDateFormat Instancji w swoje ręce, można (jeśli byli gotowi zrobić znaczną ilość Coding) zadzwonić toPattern() i analizowania wynikowy wzór, aby sprawdzić, czy używany jest termin 12 lub 24 godzin .. lub żaden z nich. Możesz nawet poprawić wzór, aby użyć "innego" formularza, a następnie zadzwonić pod numer applyPattern(String), aby zmienić format.

+1

Dziękuję bardzo! Ponieważ naprawdę chcę go wydrukować, 'DateFormat.getTimeInstance (DateFormat.SHORT, someLocale)' zrobiła dla mnie tę sztuczkę. Na pewno nie czekam na sytuację, w której muszę wiedzieć, jaki format czasu jest używany: p. – kolizz

4

Użyj klasę java.text.DateFormat stworzyć poprawny wynik danego czasu.

Począwszy od API:

sformatować datę dla bieżącej lokalizacji, należy użyć jednego z statycznych metod fabrycznych:

myString = DateFormat.getDateInstance().format(myDate); 

po prostu użyć metody getTimeInstance() i wywołać format() sposób na zwróconej dateformat obiektu

1

Pisałem niewielką funkcję, która wykrywa, czy prąd locale używa 24 lub 12 godzin:

public static boolean is24HourLocale() { 
    String output = SimpleDateFormat.getTimeInstance(DateFormat.SHORT).format(new Date()); 
    if (output.contains(" AM") || output.contains(" PM")) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+5

Nie będzie działać, jeśli masz inne domyślne ustawienia regionalne, dla których znaczniki AM/PM są różne. –