Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

2 Solutions collect form web for “Formato de una cadena de fecha y hora sólo”

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); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.