最近写代码的时候,使用了SimpleDateFormat对Date进行格式转换,刚开始我是这样写的:
SimpleDateFormat sdf = new SimpleDateFormat("HH:MM:SS");
这样写乍一看似乎没有什么毛病,但是实质上隐藏了很大的问题。仔细看一看构造参数中的"HH:MM:SS",当时我并不知道H、M、S的大小写分别代表了不同的意思,所以导致时间格式并没有转换成我想要的格式。
以下是JDK1.8文档中的日期格式说明:
使用H代表时间是按照24小时制进行转换的,使用h代表时间是按照12小时制进行转换的;M代表月份,m代表分钟;S代表秒,而s代表毫秒。
我本来是想将时间转换成时分秒,但是按照"HH:MM:SS"进行时间格式转换时,实质上是转换成了时、月、毫秒,所以我转换出来的秒是三位数,如下图所示:
而正是因为秒位是三位数,所以导致我的数据格式校验一直不通过,程序一直报错。