解析日期时我有一种奇怪的行为。给定
DateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
sdf.parse("25/10/2014")
返回2014年10月25日00:00:00 BST
,而
sdf.parse("27/10/2014")
返回2014年10月27日00:00:00 GMT
由于日光时间的变化,我发现了这一点,但我肯定希望同一个解析器返回相同的时区。或者我错了吗?
答案 0 :(得分:5)
在英国夏令时间(英国夏令时间),英国的民用时间比格林威治标准时间(格林威治标准时间)提前一小时提前,因此晚上有更多的白昼,而早晨则更少
BST从3月的最后一个星期日格林威治标准时间01:00开始,到10月的最后一个星期日格林威治标准时间01:00(英国夏令时02:00)结束。
2014年10月的最后一个星期日是26日。因此,TimeZone从英国夏令时改为GMT,如英国所见。
默认TimeZone是您的系统TimeZone,因此当您更改解析器时也是如此。
答案 1 :(得分:0)
来自SimpleDateFormat#parse(String ParsePosition)
的文档:
TimeZone
值可能会被覆盖,具体取决于给定的值 模式和text
中的时区值。任何TimeZone
之前通过调用setTimeZone()
设置的值 可能需要恢复以进行进一步的操作。
所以:不,解析器并不总是返回相同的时区。