使用DateFormat格式化时间输出

1. 前言

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

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

格式化标识说明备注
y如果不被支持,将会输出默认值格式
M一年中的月
d一个月中的日
h12小时制
H24小时制
s-
S毫秒-
a上午/下午-
E星期几-
D第几天一年中的第几天
F月内第几天在月份内的第几天
w年内第几星期在一年内的第几个星期
W月内第几星期在月份内的第几个星期
k12小时制,同h类似
K24小时制,同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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值