如何解决自定义日期格式无法解析Java
您的问题是,不幸的是,根据SimpleDateFormat中使用的模式是用作解析器还是用作格式化程序,其含义不同。作为格式化程序,您的模式可以完成预期的工作,输出将以毫秒值结尾,该值设置为三位数字,后跟三个0字符,例如:
2010-01-25-14.17.47.307000
但是,用作解析器的“ SSS”模式将匹配任意数量的数字,并将上述示例解析为307000 ms。解析了ms字段之后,解析器仍将寻找“ 000”子字符串,并且由于出现异常而失败,因为您已经达到了输入字符串的末尾,而没有满足模式的要求。
由于SimpleDateFormat中没有用于µs值的模式,因此,在将输入字符串提供给SimpleDateFormat之前,您必须编写自己的包装程序以除去最后三个0字符的输入字符串。
解决方法
我必须在Java中使用自定义日期格式。尽管Java不提供对微秒的支持,但它包含微秒。因此,我用零填充了时间模式,在格式化时它可以很好地工作,但是我无法使用该模式解析日期字符串。
有没有简单的解决方法,还是我必须自己处理微秒(使用String函数)?
@Test
public void testDateFormat() throws ParseException {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS000");
String theDate = format.format(new Date());
// this will fail:
format.parse(theDate);
}
java.text.ParseException:无法解析的日期:“ 2010-01-25-12.40.35.769000”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。