0

E, dd MMM yyyy HH:mm:ss Z我以时区所在的形式从服务器获得了日期+0200

yyyy-MM-dd HH:mm:ss我用我自己的格式解析它

myFormat.format(serverFormat.parse(dateString));

我弄错了时间:一小时前。因此,如果我10:00进行转换,我会得到09:00. 为什么?

4

3 回答 3

1

我相信这里的问题是 DST - 夏令时。标准是冬令时。现在是夏天,所以你有1小时的差异。+0200您正在使用不支持也不能支持夏令时的时区转换语法,因为它取决于国家/地区。

您应该使用特定于语言环境的时区定义语法,例如,Europe/Amsterdam而不是+0100. 另外看看类的API TimeZone

  • inDaylightTime(Date date)
  • useDaylightTime()
于 2012-09-02T11:11:51.587 回答
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));
于 2012-09-02T10:57:23.223 回答
0

尝试一下

formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
于 2012-09-02T11:00:00.457 回答