这是我正在做的事情:
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
为什么我会得到这个小时的差异?
谢谢。
答案 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