Java SimpleDateFormat为不同的日期提供不同的时区

alg*_*gia 4 java simpledateformat

解析日期时我有一种奇怪的行为.特定

DateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
Run Code Online (Sandbox Code Playgroud)

sdf.parse("25/10/2014")返回2014年10月25日00:00:00 BST

sdf.parse("27/10/2014")返回2014年10月27日00:00:00 GMT

我发现这是因为Daylight Time的变化,但我肯定希望同一个解析器返回相同的时区.还是我错了?

Ell*_*sch 5

根据维基百科关于英国夏令时的文章

在英国夏令时(BST)期间,英国的民用时间比格林威治标准时间(格林威治标准时间)提前一小时提前,因此晚上有更多的日光,而早晨则更少

BST从3月的最后一个星期日格林尼治标准时间01:00开始,到10月的最后一个星期日格林威治标准时间01:00(北京时间02:00)结束.

2014年10月的最后一个星期日是26日.因此,如英国所见,TimeZone从英国夏令时改为GMT.

默认TimeZone是您的系统TimeZone,因此当您更改解析器时也是如此.