2011-04-16 16 views
5

Cuando tomo la fecha actual, selecciono el mes, el día y el año, uso un generador de cadenas y termino con un formato mm-dd-aaaa que puse en una vista de texto Cuando guardo datos en un sqlitedb, simplemente tomo la fecha de la vista de texto e lo inserto. Esto no funciona bien para las funciones de fecha, ya que requieren el formato aaaa-mm-dd.Convertir mm-dd-aaaa en aaaa-mm-dd

¿Cuál es la mejor manera de manejar esto?

Respuesta

20

Utilice dos instancias SimpleDateFormat.

String dateString1 = "16-04-2011"; 
Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dateString1); 
String dateString2 = new SimpleDateFormat("yyyy-MM-dd").format(date); 
System.out.println(dateString2); // 2011-04-16 
// ... 

Pero mejor es utilizar sólo java.util.Date todo el tiempo para mantener el valor y aplicar formato sólo en la parte delantera. JDBC ofrece el PreparedStatement#setDate() para establecer un java.sql.Date en una cadena de SQL.

preparedStatement.setDate(1, new java.sql.Date(date.getTime())); 

Desde el otro lado, para conseguirlo de la BD, sólo tiene que utilizar ResultSet#getDate() y upCast a java.util.Date.

Date date = resultSet.getDate("columnname"); 
+0

+1 para obtener la fecha a partir de la base de datos como un objeto Date. Luego puede formatear la fecha según sea necesario en cada vista particular. – hooknc

0

Otro enfoque que puede tomar:

/** 
* This Method Takes an Input String in the format of MM/dd/yyyy 
* and converts it to yyyy-MM-dd 
* 
* @param originalString 
* @return 
*/ 
private String convertMMddyyyyToyyyyMMdd(String originalString) { 
    StringBuilder dateBuilder = new StringBuilder(); 
    dateBuilder = dateBuilder.append(originalString.substring(6)).append("-").append(originalString.substring(0, 2)).append("-").append(originalString.substring(3, 5)); 
    return dateBuilder.toString(); 
}