2015-03-19 13 views
5

Chcę wyświetlić wskazówkę, jak należy wprowadzić datę. Dla Niemiec to może wyglądaćJak wyświetlić format daty zgodnie z ustawieniami regionalnymi?

"Podaj datę w formacie: dd.mm.yyy"

dla USA

"Podaj datę w formacie: dd/mm/rrrr"

rozumiem, że z

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context); 

mogę przekonwertować datę w formacie pasującym locale użytkownika. Ale jak mogę uzyskać ciąg dnia/miesiąca/roku dla podpowiedzi?

I oczywiście chciałbym mieć coś podobnego z podpowiedziami na czas.

Dzięki za wszelkie sugestie.

Odpowiedz

3
String hintText = new SimpleDateFormat().toPattern(); // dd/MM/y HH:mm 

Wiem, że prosząc o tylko dzień, ale to było tak blisko, jak mogę. Reguła wewnętrzna to localeData.getDateFormat(SHORT) + " " + localeData.getTimeFormat(SHORT), więc domyślam się, że tak długo, jak nie ma locale, który ma format daty z spacji, wystarczy podzielić ciąg znaków na spację.

+0

Tak działa. Muszę zobaczyć, co zrobić z potencjalnie więcej niż na pustym miejscu w ciągu wynikowym. Dziękuję Ci. – Addi

+0

Uważam, że rozwiązanie samgak jest lepsze niż moje własne. Ale jak już stwierdzono w komentarzach, to API 18+ – WORMSS

4

Można zastosować metodę DateFormat getBestDateTimePattern:

String datePattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), "ddMMyyyy"); 
String timePattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), "HHmmss"); 

uwaga: przyjmuje na czas format 24-godzinny. Możesz przekonwertować na wszystkie duże i małe litery przed prezentacją dla użytkownika.

+0

Działa jak zaklęcie, niestety tylko z poziomu interfejsu API 18 (http://developer.android.com/reference/android/text/format/DateFormat.html#getBestDateTimePattern(java.util.Locale, java.lang.String)) i dalej. Wydaje się, że muszę iść z rozwiązaniem @WORMSS zasugerował – Addi

2

Spróbuj tego:

Calendar cal = Calendar.getInstance(); 
          int year = cal.get(Calendar.YEAR); 
          int month = cal.get(Calendar.MONTH); 
          int day = cal.get(Calendar.DAY_OF_MONTH); 
          int hour = cal.get(Calendar.HOUR_OF_DAY); 
          int minute = cal.get(Calendar.MINUTE); 
          int second = cal.get(Calendar.SECOND); 

Calendar now = new GregorianCalendar(year, month, day, hour, minute, second); 

long time = now.getTimeInMillis(); 
Date date = new Date(time); 

String timeSet = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date);