使用DateFormat格式化时间输出
1. 前言
系统时间,需要通过格式化输出才能展示给用户,根据不同地区用户习惯的不一样,展示的方式也有所差别,但是有一个统一的格式化标准,可以满足各种格式化输出的需求。
2. 格式化标准(格式字符标识)
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