这在javadoc中提到
DateFormat#parse():
根据给定的解析位置解析日期/时间字符串。例如,一个时间文本
"07/10/96 4:5 PM,PDT"将被解析为一个等效于的日期Date(837039900000L)。默认情况下,解析是宽松的:如果输入的格式不是此对象的format方法使用的格式,但仍可以将其解析为日期,则解析成功。客户可以通过致电坚持严格遵守该格式
setLenient(false)。此解析操作使用
calendar生成一个Date。结果,取决于子类的实现,calendar's日期时间字段和TimeZone值可能已被覆盖。TimeZone先前已通过调用设置的任何值setTimeZone可能需要恢复以进行进一步的操作。
注意最后一段。遗憾的是它并不能解释 的时候 正是这一点会发生。要解决您的特定问题,您需要在格式化操作之前明确设置所需的时区。
关于
SimpleDateFormat其自身的可变性,这已经有很多年了。您永远不应将其实例创建并分配为静态或类变量,而应始终将其作为方法(线程局部变量)。



