2011-11-16 24 views
8

Podría alguien decirme por qué estoy recibiendo java.text.ParseException: Unparseable date en el siguiente código:java.text.ParseException: Fecha unparseable:

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 


public class Testdate { 
    public static void main(String args[]) 
    { 
     String text = "2011-11-19T00:00:00.000-05:00"; 
     DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
     try { 
      Date parsed = sdf.parse(text.trim()); 
      System.out.println(parsed); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

Respuesta

9

Su causa de los dos puntos en su zona horaria. Quítelo y funcionará:

String text = "2011-11-19T00:00:00.000-0500"; 
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
+0

utilizó una cadena diferente, pero la cadena real es "2011-11-19T00: 00: 00.000-05: 00"; , Quiero que el colon también – Pawan

+0

sea solo la explicación de por qué falla, y una forma de solucionarlo. – Chris

+0

Investigaré por qué obtienes una fecha, que no es conforme a RFC ... puedes solucionarlo simplemente quitando los dos últimos puntos, pero esto obviamente es un mal trabajo. – Chris

5

Debido a que la parte de apoyo Z patrón SimpleDateFormat 's no maneja las compensaciones con dos puntos en.

Sugiero que use Joda Time en su lugar, usando ISODateFormat.dateTime() para obtener un formateador apropiado.

(Ver este similar-but-not-quite-the-same-question desde el día de hoy para obtener más información.)

Cuestiones relacionadas