dateFormat不包含已解析的日期

时间:2016-04-01 09:19:22

标签: java date simpledateformat

这是我正在做的事情:

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
Date dateFormat = parserSDF.parse("Mon Nov 07 00:00:00 CEST 2016");

dateFormat应该包含2016年11月7日00:00:00 CET,但这是我在登录时得到的:

  

Sun Nov 06 23:00:00 CET 2016

为什么我会得到这个小时的差异?

谢谢。

4 个答案:

答案 0 :(得分:3)

CEST代表中欧夏令时,与CET相同,但夏令时生效。使用CET,如:

Date dateFormat = parserSDF.parse("Mon Nov 07 00:00:00 CET 2016");

答案 1 :(得分:2)

CEST代表中欧夏令时,这是CET后1小时,所以结果是正确的。

所以如果你选择:

Date dateFormat = parserSDF.parse("Mon Nov 07 00:00:00 CET 2016");

你会得到预期的结果。

答案 2 :(得分:1)

CEST =中欧夏令时

夏令时是正常CET +1小时。 11月通常不使用夏季时间。

答案 3 :(得分:1)

问题可能是时区问题:

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
parserSDF.setTimeZone(TimeZone.getTimeZone("GMT"));
Date dateFormat = parserSDF.parse("Mon Nov 07 00:00:00 CEST 2016");

如上所示设置时区。这个问题已经解决了: Java SimpleDateFormat: an hour wrong