Android SimpleDateFormat格式化日期

背景

最近两天都在写日期和时间相关的控件, 感觉日期格式化有好多种, 遂决定写一篇文章统一梳理一波

SimpleDateFormat

使用SimpleDateFormat格式化时间时就不得不先说下格式化时间是对应的字符 常用字符如下

yyyy:年

y" , "yyy" , "yyyy" 匹配的都是4位完整的年 如 : "2021"
"yy" 匹配的是年分的后两位 如 : "21"
超过4位,会在年份前面加"0"补位 如 "YYYYY"对应"02021"

MM(只能用大写):月

假设月份为8月 "M" 对应 "8" "MM" 对应 "08" "MMM" 对应 "Aug" "MMMM" 对应 "Aug" 超出3位,仍然对应 "August"

dd:日

"d" , "dd" 都对应 "21" 超出2位,会在数字前面加"0"补位. 例如 "dddd" 对应 "0021"

hh(小写为12小时制):1~12小时制(1-12)
HH(大写为24小时制):24小时制(0-23)
mm(只能用小写):分
ss(只能用小写):秒
S(只能用大写):毫秒
a : 代表上午or下午,上午对应英文 "AM" , 下午对应英文 "PM"

常用组合

  • 紧凑型 yyMMdd 对应格式为:210806
    yyyyMMdd 对应格式为:20210806
    yyyyMMdd hh:mm a 对应格式为:20210806 04:35 AM
  • 带有格式的
    一般年月日的格式用"-"或者""隔开
    yy-MM-dd 对应格式为:21-08-06
    yyyy-MM-dd 对应格式为:2021-08-06
    yyyy-MM-dd 对应格式为:2021-08-06
    yyyy-MM-dd HH:mm 对应格式为:2021-08-06 16:35
    yyyy-MM-dd hh:mm a 对应格式为:2021-08-06 04:35 AM
    yyyy-MM-dd HH:mm:ss 对应格式为:2021-08-06 16:35:33
    yyyy-MM-dd hh:mm:ss a 对应格式为:2021-08-06 04:35:33 AM
  • 自定义格式 格式除了字符格式化外还可以用汉字格式化
    yyyy年MM月dd日 对应格式为:2021年08月06日
    yyyy年MM月dd日 HH时mm分 对应格式为:021年08月06日 16时35分

代码

SimpleDateFormat构造方法如果只传格式化,则会默认根据当前时区进行格式化,如果要指定时区可以用SimpleDateFormat(String pattern, Locale locale)方法

Date date = new Date(System.currentTimeMillis());
SimpleDateFormat format;
format = new SimpleDateFormat("yyyyMMdd");
System.out.print("yyyyMMdd ");
System.out.println(format.format(date));
format = new SimpleDateFormat("yyyyMMdd hh:mm a");
System.out.print("yyyyMMdd hh:mm a ");
System.out.println(format.format(date));
format = new SimpleDateFormat("yyyy-MM-dd");
System.out.print("yyyy-MM-dd ");
System.out.println(format.format(date));
format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
System.out.print("yyyy-MM-dd HH:mm ");
System.out.println(format.format(date));
format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
System.out.print("yyyy-MM-dd hh:mm:ss a ");
System.out.println(format.format(date));
format = new SimpleDateFormat("yyyy年MM月dd日");
System.out.print("yyyy年MM月dd日 ");
System.out.println(format.format(date));
format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
System.out.print("yyyy年MM月dd日 HH时mm分 ");
System.out.println(format.format(date));

作者:是芝麻吖
链接:https://juejin.cn/post/6993240817980669966
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted @ 2022-09-14 22:29  yassine  阅读(1113)  评论(0编辑  收藏  举报