Chcę wyświetlić datę urodzenia na podstawie lokalizacji użytkownika. W mojej aplikacji jednym z moich pól jest data urodzenia, która jest obecnie w formacie dd/mm/rrrr. Więc jeśli użytkownik zmieni swoje ustawienia regionalne, format daty również powinien się odpowiednio zmienić. Wszelkie wskazówki lub próbki kodu naprawdę pomogłyby mi przezwyciężyć problem.Formatowanie daty na podstawie ustawień narodowych użytkownika na Androidzie
Odpowiedz
Można użyć klasy DateFormat, która formatuje datę zgodnie z ustawieniami regionalnymi użytkownika.
Przykład:
String dateOfBirth = "26/02/1974";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = sdf.parse(dateOfBirth);
} catch (ParseException e) {
// handle exception here !
}
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context);
String s = dateFormat.format(date);
można użyć różnych metod getLongDateFormat
, getMediumDateFormat
zależności od poziomu oznajmiania chcesz mieć.
Aby zmienić format daty w zależności od lokalizacji, następujący kod pracował dla mnie:
String dateOfBirth = "26/02/1974";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = sdf.parse(dateOfBirth);
} catch (ParseException e) {
// handle exception here !
}
String myString = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
Wtedy, kiedy zmienić ustawienia regionalne, format data zmieni się na niej oparta. Aby uzyskać więcej informacji o wzorcach dat: http://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html
Podany link jest dla mnie przydatny. Dzięki –
samo tutaj! Dziękuję Ci ! –
Android api zapewnia łatwy sposób wyświetlania zlokalizowanego formatu daty. Poniższy kod działa.
public class FileDateUtil {
public static String getModifiedDate(long modified) {
return getModifiedDate(Locale.getDefault(), modified);
}
public static String getModifiedDate(Locale locale, long modified) {
SimpleDateFormat dateFormat = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
dateFormat = new SimpleDateFormat(getDateFormat(locale));
} else {
dateFormat = new SimpleDateFormat("MMM/dd/yyyy hh:mm:ss aa");
}
return dateFormat.format(new Date(modified));
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public static String getDateFormat(Locale locale) {
return DateFormat.getBestDateTimePattern(locale, "MM/dd/yyyy hh:mm:ss aa");
}
}
Możesz sprawdzić poniższy kod.
String koreaData = FileDateUtil.getModifiedDate(Locale.KOREA, System.currentTimeMillis());
String franceData = FileDateUtil.getModifiedDate(Locale.FRENCH, System.currentTimeMillis());
String defaultData = FileDateUtil.getModifiedDate(Locale.getDefault(), System.currentTimeMillis());
String result = "Korea : " + koreaData + System.getProperty("line.separator");
result += "France : " + franceData + System.getProperty("line.separator");
result += "Default : " + defaultData + System.getProperty("line.separator");
tv.setText(result);
Proste jak
Dla data + czas:
DateFormat format = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, Locale.getDefault());
dla właśnie data:
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
Tylko w celu skorygowania błędu wklejania kopii: W przypadku daty bez czasu wywołaj getDateInstance (nie getDateTimeInstance) – Lensflare
- 1. Formatowanie adresu na podstawie ustawień narodowych w Androidzie
- 2. Jak sformatować daty na podstawie ustawień narodowych?
- 3. Twig: pokaż nazwę miesięcy na podstawie bieżących ustawień narodowych
- 4. ehcache na podstawie daty
- 5. Jak mogę załadować styl CSS na podstawie ustawień użytkownika?
- 6. Jak sformatować bieżącą datę dla ustawień narodowych użytkownika?
- 7. Formatowanie koloru danych pola na podstawie stanu
- 8. Formatowanie numerów telefonów na podstawie kodu kraju
- 9. Formatowanie daty na czytelny dla człowieka format
- 10. Formatowanie daty w XAML na WP7
- 11. mvc3 jquery dyskretne sprawdzanie poprawności ustawień narodowych
- 12. IntelliJ wymusza formatowanie kodu w celu połączenia linii na podstawie ustawień zawijania
- 13. Wartości sum w kolumnie na podstawie daty
- 14. Jak obliczyć wiek na podstawie daty urodzenia?
- 15. filtrowania Dataframe pandy na podstawie wartości daty
- 16. Uzyskaj ciąg znaków z domyślnych ustawień narodowych za pomocą ciągu znaków w określonych ustawieniach narodowych
- 17. Formatowanie daty kalendarzowej
- 18. Formatowanie daty PHP
- 19. Formatowanie daty w Thymeleaf
- 20. Pokaż pogodę na podstawie lokalizacji użytkownika
- 21. przekierowanie użytkownika na podstawie stanu w React
- 22. Arkusz kalkulacyjny :: Formatowanie warunkowe WriteExcel na podstawie wartości innej komórki
- 23. Przełącznik ustawień narodowych przy logowaniu się do FOSUserBundle
- 24. js biblioteki daty, formatowanie na IE daje NaN
- 25. Zmiana ustawień narodowych: Wymuś aktywność, aby ponownie załadować zasoby?
- 26. Formatowanie daty w języku ClosedXML
- 27. Java: Float Formatowanie zależy od ustawień regionalnych
- 28. Dlaczego ustawienie ustawień narodowych nie naprawia tego UnicodeError?
- 29. Jak posortować tekst w sqlite3 przy użyciu określonych ustawień narodowych?
- 30. Formatowanie daty w szablonie nokautu
"DateFormat dateformat" powinien naprawdę być napisane „java.text.DateFormat format daty". Istnieją różne wersje DateFormat z różnych bibliotek. – AndroidDev
Patrząc na kod źródłowy, 'android.text.format.DateFormat.getDateFormat (kontekst)' zwraca po prostu 'java.text.DateFormat.getDateInstance (java.text.DateFormat.SHORT)'. W rzeczywistości argument 'context' nie jest nawet używany. Myślę, że wolę po prostu użyć 'java.text.DateFormat.getDateInstance (DateFormat.SHORT)' bezpośrednio. –
Nie mam daty wprowadzenia w typie ciągu, mam datę jako dane wejściowe – user924