【发布时间】:2017-12-21 08:23:52
【问题描述】:
当我将宽松模式设置为 false 时,出现异常:“java.text.ParseException: Unparseable date:”1991-04-14 00:00:00“”。 代码如下:`
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setLenient(false);
System.out.println(format.parse("1991-04-14 00:00:00"));
当我将宽松模式设置为 true 时,结果显示:“Sun Apr 14 01:00:00 CDT 1991”。 按权利,它应该是“Sun Apr 14 00:00:00 CDT 1991”。
下面的日期也有这个问题。
- 19400603000000
- 19410316000000
- 19860504000000
- 19870412000000
- 19880410000000
- 19890416000000
- 19900415000000
- 19910414000000
【问题讨论】:
-
我得到了时区:sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
-
我会考虑夏令时;夏季时间的开始。这可以解释 1 小时的差异;跳跃一小时的一秒。
-
顺便说一句,您为什么要使用早已过时且臭名昭著的麻烦
SimpleDateFormat类?java.time, the modern Java date and time API,使用起来非常好(幸运的是,它可以引入您所在时区不存在的时间)。 -
timeanddate.com/time/zone/china/shanghai。尝试在“时区更改”框中选择 1925 – 1949、1980 – 1989 和 1990 – 1999。
标签: java simpledateformat