Pra*_*eth 6 java simpledateformat parseexception
我正在获取ParseException以下代码
String dateStr = "2011-12-22 10:56:24.389362";
String formatStr = "yyyy-MM-dd HH:mm:ss.SSSSSS";
Date testDate = null;
SimpleDateFormat sdf= new SimpleDateFormat(formatStr);
sdf.setLenient(false);
testDate = sdf.parse(dateStr);
System.out.println("CHECK DATE " + sdf.format(testDate));
Run Code Online (Sandbox Code Playgroud)
Exception in thread "main" java.text.ParseException: Unparseable date: "2011-12-22 10:56:24.389362"
at java.text.DateFormat.parse(DateFormat.java:337)
如果我注释掉该行sdf.setLenient(false),那么我会看到输出的时间差
CHECK DATE 2011-12-22 11:02:53.000362
我究竟做错了什么??
该S格式说明指的是毫秒。当您允许宽松解析时,最后一部分被解释为 389362 毫秒。到目前为止,当将其添加到日期时,最后 3 位数字(实际上,值 % 1000)成为实际的毫秒数,并且您最终得到的日期比您预期的晚了大约 389 秒(约 6 1/2 分钟) . (通过严格解析,解析器知道 389362 毫秒没有意义,因此会引发错误。)
解决这个问题的最简单方法,如果你能保证日期总是这样,那就是去掉最后 3 位数字。(这将在大约一半的时间内为您提供一个相差一毫秒的日期。但这比必须编写日期解析器要好......)
| 归档时间: |
|
| 查看次数: |
19564 次 |
| 最近记录: |