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
- Java / Android: convierte una cadena de hora GMT a hora local
- ¿Cómo puedo analizar una cadena de fecha con DateFormat?
- Cómo analizar el formato de fecha "dd-MM" para obtener el año actual? "
- Get Value Of Day Month forma objeto de la fecha en Android?
- Conversión de cadena-fecha con nanosegundos
¿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.
- Obtenga día, mes y año por separado usando SimpleDateFormat
- Mes en la clase SimpleDateFormat
- SimpleDateFormat - fecha imposible
- Problema con el análisis Fecha cadena:
- SimpleDateFormat devuelve una fecha de 24 horas: ¿cómo obtener una fecha de 12 horas?
- SimpleDateFormat 24h
- Eliminar "0" principal en el día del mes SimpleDateFormat
- SimpleDateFormat: excepción de fecha incomparable
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);
- Android – Cómo determinar si las coordenadas se encuentran en la carretera en Google Maps
- Hola mundo usando el SDK de Android solo (no IDE)