Java解析字符串到日期返回错误的日期

时间:2011-05-26 12:01:28

标签: java

我遇到了一个常见问题,我想将String解析为Date。

字符串看起来像这个15.06.11 13:38:33 UTC。但是当使用用于将String解析为Date的相同格式化器格式化时,结果为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);

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

3 个答案:

答案 0 :(得分:10)

月份为MM,而非mm(以分钟为单位)
yyyyyy(你的年份似乎是2位数)(感谢彼得注意到这一点)

答案 1 :(得分:3)

成功

dd.MM.yyyy HH:mm:ss z

来自Doc

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

答案 2 :(得分: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"));

Wed Jun 15 14:38:33 BST 2011

为我打印(因为我是GMT + 1)

{{1}}