mam pobierania datetime z DB SQLite, które wychodzi w formacie ...Format ciąg datetime do czasu tylko
2011-01-24 02:45:00
W języku C# można po prostu użyć DateTime.Parse("2011-01-24 02:45:00").ToString("HH:mm")
aby uzyskać ciąg 02:45
Czy mogę to zrobić w Android/Java? Mój kod w moim Android app wygląda następująco ...
// dateStr below is logging as correctly being yyyy-MM-dd HH:mm:ss format
String dateStr = cursor.getString(cursor.getColumnIndex("start_time"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String shortTimeStr = sdf.format(dateStr); // <-- throws IllegalArgumentException
EDIT: Dzięki obu doc_180 i Konstantin Burov - przykładów podanych pomogły mi rozwiązać ten problem. Częścią problemu było to, że importowałem java.sql.Date zamiast java.util.Date. Zmieniłem sprawy i teraz to działa doskonale.
SimpleDateFormat potrzebuje argumentu daty, a nie łańcucha. Powinieneś zapisać swoją datę jako milisekundy i utworzyć obiekt daty z tego. Data d = nowa Data (dateAsMillisec), a następnie przekaż ją do prostego formatu. –
@ doc_180: OK, przepraszam, masz rację - prawdopodobnie musisz przemyśleć moje pytanie. Moim problemem jest to, że mój DB na stronie Android jest "lustrem" SQLite DB aplikacji opartej na komputerze PC, który używa tego długiego/wstecznego formatu datetime i chciałbym zachować te same formaty. Próbowałem przy użyciu Date.parse (String), a następnie sdf.format (...), ale również rzucił wyjątek. – Squonk
Czy wypróbowałeś mój kod. Działa i sprawdziłem. –