使用DateFormat格式化时间输出

1. 前言

系统时间,需要通过格式化输出才能展示给用户,根据不同地区用户习惯的不一样,展示的方式也有所差别,但是有一个统一的格式化标准,可以满足各种格式化输出的需求。

2. 格式化标准(格式字符标识)

格式化标识 说明 备注 y 年 如果不被支持,将会输出默认值格式 M 月 一年中的月 d 日 一个月中的日 h 时 12小时制 H 时 24小时制 s 秒 - S 毫秒 - a 上午/下午 - E 星期几 - D 第几天 一年中的第几天 F 月内第几天 在月份内的第几天 w 年内第几星期 在一年内的第几个星期 W 月内第几星期 在月份内的第几个星期 k 时 12小时制,同h类似 K 时 24小时制,同H类似 z 时区 -

3. 使用注意事项

3.1 格式字符数量控制显示位数

格式字符的数量控制输出位数,超出最大位数前面补0,如果设置的位数不被支持,将会使用系统默认的格式输出。

    示例
fun main(args: Array<String>) = runBlocking {
          
   
    println(SimpleDateFormat("yy年M月d日 HH时mm分ss秒").format(Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 200L)))
    println(SimpleDateFormat("yyy年M月d日 HH时mm分ss秒").format(Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 200L)))
    println(SimpleDateFormat("yyyy年M月d日 HH时mm分ss秒").format(Date()))
    println(SimpleDateFormat("yyyyy年MM月dd日 HH时mm分ss秒").format(Date()))
}
    输出
19年5月31日 12时00分53秒
2019年5月31日 12时00分53秒
2019年12月17日 12时00分53秒
02019年12月17日 12时00分53秒

从上面的例子可以看到,年份格式为yy,输出两位年份;当年份格式为yyy,不支持,输出系统默认格式(当前年份的全部);当年份格式为yyyyy,超出了当前年份的位数,将在前面补0;月份格式为M,当月份为个位数时显示一位,当月份为两位时显示两位;月份格式为MM,无论如何都显示两位,不足前面补0;其他字段也是类似的规则。

3.2 格式化输出包含标识占位符的输入出

&nbps;&nbps;&nbps;&nbps;如果在你格式化之后的字符串中,包含了标识符占位符,可以使用单引号将字符括起来,这样格式化输出时将会当做普通字符输出。

    示例
println(SimpleDateFormat("yyyy/MM/dd HH:mm:sss").format(Date()))
    输出
2019/12/17 14:39:31s
经验分享 程序员 微信小程序 职场和发展