日期时间格式

SimpleDateFormat格式化

SimpleDateFormat不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。

日期/时间模式

       /**
         * yyyy:年
         * MM:月
         * dd:日
         * hh:1~12小时制(1-12)
         * HH:24小时制(0-23)
         * mm:分
         * ss:秒
         * S:毫秒
         * Y:当前周所在年份
         * G:年代【AD(公元)、BC(公元前)】
         * E:星期几【汉字】
         * D:一年中的天数
         * F:一月中的第几个星期【月份中的星期(会把这个月总共过的天数除以7)】
         * w:一年中的第几个星期
         * W:一月中的第几星期【月份中的周数(会根据实际情况来算)】
         * a:上下午标识
         * k:和HH差不多,表示一天24小时制(1-24)。
         * K:和hh差不多,表示一天12小时制(0-11)。
         * z:表示时区【通用时区(Pacific Standard Time; PST; GMT-08:00)】
         * Z:表示时区【RFC 822时区(-0800,+0800)】
         * X:表示时区【ISO 8601时区(-08; -0800; -08:00)】
         * u:星期几【数字】
         */
        //HH 和 hh 的差别:前者是24小时制,后者是12小时制。
        StringBuilder sb = new StringBuilder();
        //追加
        sb
                .append("当前时间24小时制H时S毫秒:yyyy年MM月dd日 HH:mm:ss:SS\n")
                .append("当前时间12小时制h时S毫秒:yyyy年MM月dd日 hh:mm:ss:SS\n")
                .append("当前时间24小时制k时S毫秒:yyyy年MM月dd日 kk:mm:ss:SS\n")
                .append("当前时间12小时制K时S毫秒:yyyy年MM月dd日 KK:mm:ss:SS\n")
                .append("今年是Y年\n")
                .append("年代:G\n")
                .append("上午或者下午:a\n")
                .append("星期:E\n")
                .append("一年中的第D天\n")
                .append("一月中的第F个星期\n")
                .append("一年中的第w个星期\n")
                .append("一月中的第W个星期\n")
                .append("通用时区:z\n")
                .append("822时区:Z\n")  // RFC 822时区
                .append("8601时区:X\n")  // ISO 8601时区
                .append("星期:u\n");  //数字
        //时间格式转换
        SimpleDateFormat sdf = new SimpleDateFormat(sb.toString());
        String dateString = sdf.format(new Date());
        System.out.println(dateString);

运行结果 

当前时间24小时制15时939毫秒:2022年10月10日 15:13:18:939
当前时间12小时制3时939毫秒:2022年10月10日 03:13:18:939
当前时间24小时制15时939毫秒:2022年10月10日 15:13:18:939
当前时间12小时制3时939毫秒:2022年10月10日 03:13:18:939
今年是2022年
年代:公元
上午或者下午:下午
星期:星期一
一年中的第283天
一月中的第2个星期
一年中的第42个星期
一月中的第3个星期
通用时区:CST
822时区:+0800
8601时区:+08
星期:1

 DateTimeFormatter格式化

DateTimeFormatter不但是不变对象,它还是线程安全的

System.out.println("默认时区:"+ZoneId.systemDefault());
System.out.println("本地默认时区:"+DateUtil.format(new Date(),"yyyy-MM-dd'T'HH:mm:ssXXX"));
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");  
// XXX:表示时区
// ZonedDateTime.now()  默认时区
// ZoneId.getAvailableZoneIds()  //获取所有可使用时区
// ZoneId.of 获取指定时区
System.out.println("本地默认时区:"+dtf.format(ZonedDateTime.now()));
System.out.println("世界标准时间UTC:"+dtf.format(ZonedDateTime.now(ZoneId.of("UTC"))));
System.out.println("世界标准时间GMT:"+dtf.format(ZonedDateTime.now(ZoneId.of("GMT"))));
System.out.println("世界标准时间UT:"+dtf.format(ZonedDateTime.now(ZoneId.of("UT"))));


//运行结果
    /**
     * 默认时区:Asia/Shanghai
     * 本地默认时区:2022-10-10T16:12:27+08:00
     * 本地默认时区:2022-10-10T16:12:27+08:00
     * 世界标准时间UTC:2022-10-10T08:12:27Z
     * 世界标准时间GMT:2022-10-10T08:12:27Z
     * 世界标准时间UT:2022-10-10T08:12:27Z
     */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值