记自己一次无知的写法,导致项目产生一个异常。下面拿出实例:
我负责接收接口传递过来的参数,做相应的转换,出入数据库中,一个时间的通过字符串的形式传递过来,这个时间是24小时制,我的转化如下:
JSONObject params = new JSONObject(); String scanTime = params.getString("scanTime"); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
测试都是上午测试的,结果就出现了一个问题,中午12点扫描的东西,显示是0点,我就郁闷了,就查看了一下1.8-API
H和h的时间制度是不一样,一个是12小时制,一个是24小时制度,心里不禁感叹java设计的真全面,只怪自己太low,缺乏相关的知识。
还有特别需要注意的是,DD和dd表示的也是不一样的,下面详细解释一下:
字母 | 日期或时间元素 | 表示 | 实例 |
G | 年代标志符 | Text | AD |
y | 年 | Year | 1996:96 |
Y | 年 | Year | 2009;09 |
M | 月 | Month | July;Jul;07 |
L | 年月(独立形式) | Month | July;Jul;07 |
w | 一年中第几个星期 | Number | 27 |
W | 一月中第几个星期 | Number | 2 |
D | 一年中的第几天 | Number | 189 |
d | 一月中的第几天 | Number | 10 |
F | 一月中第几个星期 | Number | 03 |
E | 星期数(星期一.......星期日) | Text | 星期日 |
u | 星期数(1 =星期一,7,星期日) | Number | 7 |
a | 上午 / 下午 标记符 | Text | PM |
H | 时 一天中的小时数(0-23) | Number | 0 |
k | 时 一天中的小时数(1~24) | Number | 24 |
K | am/pm 中的小时数(0-11) | Number | 0 |
h | am/pm 中的小时数(1-12) | Number | 12 |
m | 小时中的分钟数 | Number | 30 |
s | 分钟的秒数(当前分钟的秒数) | Number | 55 |
S | 毫秒数(当前秒的毫秒数) | Number | 978 |
z | 时区 | CST | |
Z | 时区 | =0800 | |
X | 时区 | +08 |
大家在使用SimpleDateFormat时,千万要注意大小写,特别是M\m、D\d、S\s、H\h的时间转换。
自己出错,引以为戒。如有不当,恳请指教!