我运行下面的代码:SimpleDateFormat的解析字符串错误的时间
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
try{
Date date = sdf.parse("03-28-2003 01:00:00");
System.out.print(date.toString());
}
catch(Exception e){
//do something
}
解析的结果是这样的日期:2003-03-28T02:00:00.000 + 0300
一个小时添加。
当我将年/日/小时更改为任何其他有效的号码时,我会得到正确的时间,不会增加额外的小时。如果我只改变分钟或秒数,我仍然可以获得新增的小时数。
谁能告诉我为什么会发生这种情况?
编辑:
这与夏令时在我的程序运行时导通UTC + 02的时区适用于:00。 在这个时区,时钟在2003-03-28更改。这就是为什么要增加一小时的原因,正如下面的评论和回答所建议的那样。
我使用了答案中建议的代码来解析我的日期和解析工作!日期正确解析,额外的小时不被添加。
我得到这个输出'Fri Mar 28 01:00:00 CET 2003'。这可能是一个CET!= CEST问题。 –
试试这个sdf.setTimeZone(TimeZone.getTimeZone(“GMT”)); – Feek
谢谢,我现在得到正确的时间,假设给定的日期是在当地时间..但在我的情况下,日期已在GMT时区给我,所以我不能使用它..我只需要将字符串解析为日期对象。 – mormayr