今天做个上传文件的功能,并且要记录当前的时间作为上传时间,但是发现用java new Date() 并且格式化之后的时间有问题,无法存入数据库,例如:
今天是2014年7月31日,时间是下午6点51分42秒,但输出的结果却是 2014-51-31 06:51:42,首先,月份肯定错了;其次,下午6点最好能显示成18点。
不知问题出在哪里,检查了一下格式化用的日期标识符:
DateUtils.asString(new Date(), "yyyy-mm-dd hh:mm:ss")
然后百度了一下,发现问题了:
月份用的“mm”其实代表的分钟,而不是月份,月份要用“MM”,并且要用24小时制的话是“HH”,“hh”是12小时制。
具体规则如下:
- 时间日期标识符:
- yyyy:年
- MM:月
- dd:日
- hh:1~12小时制(1-12)
- HH:24小时制(0-23)
- mm:分
- ss:秒
- S:毫秒
- E:星期几
- D:一年中的第几天
- F:一月中的第几个星期(会把这个月总共过的天数除以7)
- w:一年中的第几个星期
- W:一月中的第几星期(会根据实际情况来算)
- a:上下午标识
- k:和HH差不多,表示一天24小时制(1-24)。
- K:和hh<span style="font-family: Arial, Helvetica, sans-serif;">差不多</span><span style="font-family: Arial, Helvetica, sans-serif;">,表示一天12小时制(0-11)。</span>
- z:表示时区
总结:日期操作经常用到,可是一直没有很熟练地掌握,说明不够重视。