2011-05-26 147 views
1

我得到了一个常见的问题,我想解析一个字符串到日期。Java解析字符串日期返回错误日期

该字符串看起来像这样15.06.11 13:38:33 UTC。但是,使用用于解析字符串到日期的相同格式化程序进行格式化时,结果为15.38.0011 13:38:33 UTC。 TimeInMillis返回负值-61818978087000

SimpleDateFormat formatter = new SimpleDateFormat("dd.mm.yyyy HH:mm:ss z"); 
formatter.setLenient(false); 
Date time = formatter.parse("15.06.11 13:38:33 UTC");  
Calendar timestamp = Calendar.getInstance(); 
timestamp.setTime(time); 

我很感谢我能得到的每一个帮助。也许我犯了一些愚蠢的错误,但我没有看到它。请睁开我的眼睛。

回答

10

月份是MM,不mm(这是分钟)
yyyyyy(你今年是2位数的,因为它似乎)(感谢彼得注意到,)

3

让它

dd.MM.yyyy HH:mm:ss z 

Doc

M Month in year Month July; Jul; 07 
m Minute in hour Number 30 
+0

欢迎您:) – 2011-05-26 12:11:03

1

您需要一个月改为MM也是逐年变化yy以其它方式使用yyyy就会认为15.06.11是在今年11,而不是2011

System.out.println(new SimpleDateFormat("dd.MM.yy HH:mm:ss z") 
         .parse("15.06.11 13:38:33 UTC")); 

版画,我(因为我GMT +1)

Wed Jun 15 14:38:33 BST 2011 
+1

+1的一年。 – Bozho 2011-05-26 12:12:58

+0

我总是尝试自己的代码。假设代码的其余部分是正确的,我已经被多次发现。 ;) – 2011-05-26 12:15:42