JAVA Kotlin Androd 使用String.format()格式化日期

在以前的开发中,日期格式化一直使用的是SimpleDateFormat进行格式化。今天发现String.format也可以格式化。当 然,两种方式的优劣没有进行深入分析。

kotlin 复制代码
        val date = Date()
        //月,日,星期,AM/PM
        //Fue 1 (Sat) pm
        val fullDate = String.format("%tb %te일 (%ta) %tp", date, date, date, date)
        println(fullDate)
        //24小时制  17:02
        var format = "%tH:%tM"
        println(String.format("full 24 = $format", date, date))
        //Android 系统是否是24小时格式还是12小时格式
//        if (!DateFormat.is24HourFormat(this)) {
        //12小时制  05:02  5:02
        format = "%tI:%tM  %tl:%tM "
//        }
        val time = String.format(format, date, date, date, date)
        println(time)
  1. 日期格式化 (2018/5/13 周日 中文环境下测试)
    转换符 说明 结果
    %tb 指定语言环境下的月份简称 五月
    %tB 指定语言环境下的月份全称 五月
    %ta 指定语言环境下周几的简称 星期日
    %tA 指定语言环境下周几的全称 星期日
    %ty 2位数的年份 18
    %tY 4位数年份 2018
    %tm 月份 05
    %te 一个月中的某一天(1~31) 13
    %td 一个月中的某一天(01~31) 13
    %tj 一年中第几天 133
  2. 时间格式化 (15:03:15.923 中文环境下测试)
    转换符 说明 结果
    %tH 小时(00~23) 15
    %tI 小时(01~12) 03
    %tk 小时(0~23) 15
    %tl 小时(1~12) 3
    %tM 分钟(00~59) 35
    %tS 秒(00~59) 55
    %tL 毫秒(000~999) 923
    %tN 9位数微妙(000000000~999999999) 923000000
    %tp 当前语言环境下上午/下午 下午
    %tz 时区 +0800
    %tZ 时区 CST
    %ts 从1970-01-01 00:00:00 到现在的秒 1526196955
    %tQ 从1970-01-01 00:00:00 到现在的毫秒 1526196955923
  3. 日期+时间 (2018/5/13 15:44:21 中文环境)
    转换符 说明 结果
    %tF 年-月-日 2018-05-13
    %tD 月/日/年 05/13/18
    %tc 全部时间日期 星期日 五月 13 15:44:21 CST 2018
    %tr 时分秒 PM 03:44:21 下午
    %tT 时分秒 15:44:21
    %tR 时分 15:44
kotlin 复制代码
private fun dateFormat() {
        val date: Date = Date()
        //c的使用
        System.out.printf("全部日期和时间信息:%tc%n", date)
        //f的使用
        java.lang.System.out.printf("年-月-日格式:%tF%n", date)
        //d的使用
        java.lang.System.out.printf("月/日/年格式:%tD%n", date)
        //r的使用
        java.lang.System.out.printf("HH:MM:SS PM格式(12时制):%tr%n", date)
        //t的使用
        java.lang.System.out.printf("HH:MM:SS格式(24时制):%tT%n", date)
        //R的使用
        java.lang.System.out.printf("HH:MM格式(24时制):%tR", date)
    }

    private fun dateTimeFormat() {
        val date: Date = Date()
        //b的使用,月份简称
        var str: String? = String.format(Locale.US, "英文月份简称:%tb", date)
        println(str)
        java.lang.System.out.printf("本地月份简称:%tb%n", date)
        //B的使用,月份全称
        str = String.format(Locale.US, "英文月份全称:%tB", date)
        println(str)
        java.lang.System.out.printf("本地月份全称:%tB%n", date)
        //a的使用,星期简称
        str = String.format(Locale.US, "英文星期的简称:%ta", date)
        println(str)
        //A的使用,星期全称
        java.lang.System.out.printf("本地星期的简称:%tA%n", date)
        //C的使用,年前两位
        java.lang.System.out.printf("年的前两位数字(不足两位前面补0):%tC%n", date)
        //y的使用,年后两位
        java.lang.System.out.printf("年的后两位数字(不足两位前面补0):%ty%n", date)
        //j的使用,一年的天数
        java.lang.System.out.printf("一年中的天数(即年的第几天):%tj%n", date)
        //m的使用,月份
        java.lang.System.out.printf("两位数字的月份(不足两位前面补0):%tm%n", date)
        //d的使用,日(二位,不够补零)
        java.lang.System.out.printf("两位数字的日(不足两位前面补0):%td%n", date)
        //e的使用,日(一位不补零)
        java.lang.System.out.printf("月份的日(前面不补0):%te", date)
    }

结果:英文系统:

复制代码
  全部日期和时间信息:Sat Feb 01 17:24:08 GMT+08:00 2025
  年-月-日格式:2025-02-01
  月/日/年格式:02/01/25
  HH:MM:SS PM格式(12时制):05:24:08 PM
  HH:MM:SS格式(24时制):17:24:08
  HH:MM格式(24时制):17:24英文月份简称:Feb
  本地月份简称:Feb
  英文月份全称:February
  本地月份全称:February
  英文星期的简称:Sat
  本地星期的简称:Saturday
  年的前两位数字(不足两位前面补0):20
  年的后两位数字(不足两位前面补0):25
  一年中的天数(即年的第几天):032
  两位数字的月份(不足两位前面补0):02
  两位数字的日(不足两位前面补0):01
  月份的日(前面不补0):1Feb 1일 (Sat) pm
  full 24 = 17:24
  05:24  5:24

韩文系统语言:

复制代码
I  全部日期和时间信息:화 2월 18 17:27:22 GMT+08:00 2025
 年-月-日格式:2025-02-18
 月/日/年格式:02/18/25
 HH:MM:SS PM格式(12时制):05:27:22 오후
 HH:MM:SS格式(24时制):17:27:22
 HH:MM格式(24时制):17:27英文月份简称:Feb
 本地月份简称:2월
 英文月份全称:February
 本地月份全称:2월
 英文星期的简称:Tue
 本地星期的简称:화요일
 年的前两位数字(不足两位前面补0):20
 年的后两位数字(不足两位前面补0):25
 一年中的天数(即年的第几天):049
 两位数字的月份(不足两位前面补0):02
 两位数字的日(不足两位前面补0):18
 月份的日(前面不补0):182월 18일 (화) 오후
 full 24 = 17:27
 05:27  5:27 
相关推荐
Highcharts.js1 天前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
头发还在的女程序员1 天前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats1 天前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
我命由我123451 天前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
爱写代码的小朋友1 天前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
果汁华1 天前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
小小晓.1 天前
C++:语句和作用域
开发语言·c++
雨白1 天前
深入理解 Kotlin 协程 (八):拾遗补阙,探秘官方框架的调度细节与取消闭环
android·kotlin
都叫我大帅哥1 天前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程
wanderist.1 天前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法