2012-03-30 25 views
47

Estoy tratando de analizar una cadena de un campo de fecha en una aplicación de Android pero parece que no puedo corregirlo. Aquí está la cadena que intento convertir a una fecha "26/03/2012 11:49:00 AM". La función que estoy usando es:Convertir cadena a fecha en java

private Date ConvertToDate(String dateString){ 
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); 
    Date convertedDate = new Date(); 
    try { 
     convertedDate = dateFormat.parse(dateString); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return convertedDate; 
} 

pero aparece 3/1/112 11:49 como el resultado .. Cualquier ayuda que realmente apreciaría. gracias

+2

¿Dónde están viendo "3/1/112 11:49 AM"? El valor devuelto es una Fecha, no una cadena, por lo que debe estar haciendo * algo * para verlo como un resultado de cadena ... –

+0

Veo el Mar Mar 26 11:49:00 IST 2012 como salida. –

+0

intente establecer el análisis sintáctico como indulgente utilizando dateFormat.setLenient (true) y luego verifique los resultados de su análisis – manub

Respuesta

103

Usted está equivocado en la forma de mostrar los datos supongo, porque para mí:

String dateString = "03/26/2012 11:49:00 AM"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); 
    Date convertedDate = new Date(); 
    try { 
     convertedDate = dateFormat.parse(dateString); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    System.out.println(convertedDate); 

Lienzo:

Mon Mar 26 11:49:00 EEST 2012 
+0

todos tenían razón. estaba convirtiendo correctamente pero estaba usando Date.getYear(), getMonth() y todos los que estaba usando incorrectamente. Gracias por toda tu ayuda. – bflosabre91

4
String str_date="13-09-2011"; 
DateFormat formatter ; 
Date date ; 
formatter = new SimpleDateFormat("dd-MM-yyyy"); 
date = (Date)formatter.parse(str_date); 
System.out.println("Today is " +date.getTime()); 

Prueba este

17

que ha ido bien cuando utilicé el parámetro Locale.US en SimpleDateFormat

String dateString = "15 May 2013 17:38:34 +0300"; 
System.out.println(dateString); 

SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy HH:mm:ss Z", Locale.US); 
DateFormat targetFormat = new SimpleDateFormat("dd MMM yyyy HH:mm", Locale.getDefault()); 
String formattedDate = null; 
Date convertedDate = new Date(); 
try { 
    convertedDate = dateFormat.parse(dateString); 
System.out.println(dateString); 
formattedDate = targetFormat.format(convertedDate); 
} catch (ParseException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
System.out.println(convertedDate); 
2

Este código le ayudará a dar un resultado como FEB 17 20:49.

String myTimestamp="2014/02/17 20:49"; 

    SimpleDateFormat form = new SimpleDateFormat("yyyy/MM/dd HH:mm"); 
    Date date = null; 
    Date time = null; 
    try 
    { 
     date = form.parse(myTimestamp); 
     time = new Date(myTimestamp); 
     SimpleDateFormat postFormater = new SimpleDateFormat("MMM dd"); 
     SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
     String newDateStr = postFormater.format(date).toUpperCase(); 
     String newTimeStr = sdf.format(time); 
     System.out.println("Date : "+newDateStr); 
     System.out.println("Time : "+newTimeStr); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

Resultado:

Fecha FEB 17

Hora: 20:49

0
GregorianCalendar date; 

CharSequence dateForMart = android.text.format.DateFormat.format("yyyy-MM-dd", date); 

Toast.makeText(LogmeanActivity.this,dateForMart,Toast.LENGTH_LONG).show(); 
1
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateInString = "07/06/2013"; 

try { 

    Date date = formatter.parse(dateInString); 
    System.out.println(date); 
    System.out.println(formatter.format(date)); 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Salida:

2014/08/06 16:06:54 
2014/08/06 16:06:54 
Cuestiones relacionadas