错误使用SimpleDateFormat导致时间显示错误
SimpleDateFormat格式
我每次从数据库读存入的时间,然后new Date(longTime),再用SimpleDateFormat格式化,但总是显示时间不对,最后找到原因是new SimpleDateFormat时候格式要严格遵守规定。
常用格式有:
年:y
月:M
日:d
时:h(1~12) H(0~23)
分:m
秒:s
毫秒:S
星期:E
写几个对应格式符号,就显示几位,不够用0填充;例如 格式:“hh:mmm” 则12:24显示为12:024;如果只是一位,则显示最少可以显示时间的位数;如果不是一位但不能显示全部位数,则从左向右显示;示例如下:
String dateStr1= new SimpleDateFormat("yy.MM.dd HH:mm").format(date);
String dateStr2= new SimpleDateFormat("y.M.d H:m:s:S").format(date);
String dateStr3= new SimpleDateFormat("yyy.M.d H:m:s:S").format(date);
String dateStr4= new SimpleDateFormat("yyyyy.MMM.d H:m:s:S").format(date);
Log.e("发送时间", "onClick: Date"+ dateStr);
Log.e("发送时间1", "onClick: Date"+ dateStr1);
Log.e("发送时间2", "onClick: Date"+ dateStr2);
Log.e("发送时间3", "onClick: Date"+ dateStr3);
Log.e("发送时间4", "onClick: Date"+ dateStr4);
我起初就是把分对应的mm写成大写MM,而这个对应的是月份,所以每次都显示的分是当前月份。
简单示例:
SimpleDateFormat format=new SimpleDateFormat("yyyy.MM.dd-HH:mm");
Date date=new Date();
format.format(date);//@return dateString 2020.04.11-23:23```
格式字符串可以随便写,比如"yyyy年MM月dd日",当然顺序不必遵守年月日时分秒顺序;但小心我的前车之鉴HH:MM。。。