W Javie Chcę drukować tylko czas dnia w godzinach i minutach i chcesz go prawidłowo przełączać pomiędzy, np: „13:00” i „13:00” według lokalizacji. Jak mam to zrobic?Jak mogę sprawdzić, czy ustawienia regionalne używają 12 lub 24 godzin w Javie?
Odpowiedz
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 cokolwiekDateFormat
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 numerapplyPattern(String)
, aby zmienić format.
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
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;
}
}
Nie będzie działać, jeśli masz inne domyślne ustawienia regionalne, dla których znaczniki AM/PM są różne. –
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