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:ss's'").format(Date()))
- 输出
2019/12/17 14:39:31s