Formato de una cadena de fecha y hora sólo

Estoy recuperando un datetime de un DB de SQLite que sale en el formato …

2011-01-24 02:45:00 

En C # puedo simplemente usar DateTime.Parse("2011-01-24 02:45:00").ToString("HH:mm") para obtener la cadena 02:45

¿Es su una manera que puedo hacer esto en Android / Java? Mi código en mi aplicación para Android se ve así …

 // 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: Gracias a doc_180 y Konstantin Burov – los ejemplos dados me han ayudado a solucionar el problema. Parte del problema era que estaba importando java.sql.Date en lugar de java.util.Date. He cambiado las cosas y funciona perfectamente para mí ahora.

Necesita hacer lo siguiente.

 try { Date date = null; date = df.parse("2011-01-24 02:45:00"); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); String shortTimeStr = sdf.format(date); System.out.println(shortTimeStr); } catch (ParseException e) { // To change body of catch statement use File | Settings | File Templates. e.printStackTrace(); } 

Como mencioné en el comentario, debe almacenar el tiempo en milisegundos en lugar de cadena. De lo contrario, no veo otra manera que la creación de un objeto intermediario Fecha.

SimpleDateFormat.format espera Date o Calendar como argumento mientras está pasando una String. Convierta primero la cadena en la fecha.

 String dateStr = cursor.getString(cursor.getColumnIndex("start_time")); SimpleDateFormat toFullDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date fullDate = toFullDate.parse(dateStr); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); String shortTimeStr = sdf.format(fullDate); 

Y sí, preferiría almacenar la fecha en la base de datos, así que conseguir un objeto Date sería más trivial:

 Long dateMilliseconds = cursor.getLong(cursor.getColumnIndex("start_time")); Date fullDate = new Date(dateMilliseconds); 
  • Mes sin ceros iniciales en Android
  • Unix timestamp a datetime en android
  • Conversión de aaaa-mm-dd en dd mm aaaa
  • Pregunta simple sobre java SimpleDateFormat
  • Advertencia de SimpleDateFormat Para obtener el formato local, utilice getDateInstance (), getDateTimeInstance () o getTimeInstance ()
  • SimpleDateFormat toma demasiado tiempo cuando se incluye la zona horaria
  • Android Formato de fecha con zona horaria
  • Android SimpleDateFormat devolver el tiempo incorrecto entre la medianoche y 1 am
  • Patrón de caracteres 'L' en SimpleDateFormat
  • android obtener la fecha anterior de una fecha correspondiente (no la fecha de ayer)
  • SimpleDateFormat ParseException: Unparseable date Error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.