2011-11-16 128 views
8

有谁请告诉我为什么我在下面的代码得到java.text.ParseException: Unparseable datejava.text.ParseException:无法解析日期:

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(); 
     } 
    } 

} 

回答

9

其因您所在时区的结肠。删除它,它将工作:

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

您使用了不同的字符串,但实际的字符串是“2011-11-19T00:00:00.000-05:00”; ,我想冒号 – Pawan

+0

只是解释它失败的原因,以及如何解决它的一种方法。 – Chris

+0

我会调查为什么你会得到一个日期,这是不符合RFC的..你可以通过删除最后一个冒号解决它,但这显然是一个糟糕的工作。 – Chris

5

由于SimpleDateFormat的方式支持不处理与偏移量Z部分冒号英寸

我建议您使用Joda Time来代替,使用ISODateFormat.dateTime()来获得适当的格式化程序。

(见本similar-but-not-quite-the-same-question从今天早些时候,以获取更多信息。)

相关问题