日期转换:时间错误

时间:2012-09-02 10:55:50

标签: java date-format

我从E, dd MMM yyyy HH:mm:ss Z表单中获取了服务器的日期,其中时区为+0200

我使用

以我自己的格式yyyy-MM-dd HH:mm:ss解析它
myFormat.format(serverFormat.parse(dateString));

我错了时间:这是一个小时前。所以,如果我在转换中获得10:00,我会得到09:00。为什么呢?

3 个答案:

答案 0 :(得分:1)

我认为这里的问题是夏令时 - 夏令时。标准是冬季时间。这是一个夏天,所以你得到1小时的差异。 您正在使用不支持夏令时的时区转换语法+0200,因为它取决于国家/地区。

您应该使用特定于区域设置的时区定义语法,例如Europe/Amsterdam代替+0100。另外,请查看类TimeZone的API:

  • inDaylightTime(Date date)
  • useDaylightTime()

答案 1 :(得分:0)

检查返回值的时区,这很可能是导致问题的原因。

DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");    
formatter.setTimeZone(TimeZone.getTimeZone("GMT+2")); 

System.out.println( formatter.format(serverFormat.parse(dateString));

答案 2 :(得分:0)

试试吧

formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");