SimpleDateFormat详解(日期格式与2大用法)

SimpleDateFormat详解(日期格式与2大用法)-mikechen

SimpleDateFormat简介

SimpleDataFormat类可用于格式化、解析带区域的日期,可将日期格式转为文本,可将文本解析为日期,还可以进行日期规范化。

SimpleDataFormat类支持用户自定义日期格式,同时也提供一些内置的日期格式,例如:

getTimeInstance
getDateInstance或
DateFormat中的getDateTimeInstance

来获取内置日期格式,上述方法都会返回一个用默认格式的Date/Time类型对象。

 

SimpleDateFormat日期格式

SimpleDateFormat 在格式化日期时提供了大量不同的选项。日期和时间格式由 日期和时间模式字符串 指定。

yyyy:年
MM:月
dd:日
hh:1~12小时制(1-12)
HH:24小时制(0-23)
mm:分
ss:秒
S:毫秒
E:星期几
D:一年中的第几天
F:一月中的第几个星期(会把这个月总共过的天数除以7)
w:一年中的第几个星期
W:一月中的第几星期(会根据实际情况来算)
a:上下午标识
k:和HH差不多,表示一天24小时制(1-24)。
K:和hh差不多,表示一天12小时制(0-11)。
z:表示时区

 

SimpleDateFormat的用法

SimpleDateFormat是Java提供的一个格式化和解析日期的工具类,它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)。

SimpleDateFormat的用法主要分为以下两种:

1.日期转字符串

package com.mikechen.java.base;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期转字符串
 *
 * @author mikechen
 */
public class TestDate {
    public static void main(String[] args){
        Date date = new Date();
        //封装默认日期格式对象 & 5种自定义日期格式对象
        SimpleDateFormat F0 = new SimpleDateFormat();
        SimpleDateFormat F1 =new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat F2 =new SimpleDateFormat("yy/MM/dd HH:mm");
        SimpleDateFormat F3 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat F4 =new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat F5 =new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");

        System.out.println(F0.format(date));
        System.out.println(F1.format(date));
        System.out.println(F2.format(date));
        System.out.println(F3.format(date));
        System.out.println(F4.format(date));
        System.out.println(F5.format(date));
    }

}

输出结果:

22-8-1 上午10:51
2022年08月01日 10时51分54秒
22/08/01 10:51
2022-08-01 10:51:54
2022年08月01日 10时51分54秒
一年中的第 213 天 一年中第32个星期 一月中第1个星期 在一天中10时 CST时区

 

2.字符串转日期

package com.mikechen.java.base;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 字符串转日期
 *
 * @author mikechen
 */
public class TestDate {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        //封装5种日期格式对象
        SimpleDateFormat F1 =new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat F2 =new SimpleDateFormat("yy/MM/dd HH:mm");
        SimpleDateFormat F3 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat F4 =new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat F5 =new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");

        //解析方法parse
        Date date1 = F1.parse("2022年08月01日 08时08分08秒");
        Date date2 = F2.parse("2022/08/01 08:28");
        Date date3 = F3.parse("2022-08-01 10:50:56");

        System.out.println(date1);
        System.out.println(date1.toString());
        System.out.println(date2);
        System.out.println(date3);
    }

}

运行结果为:

Mon Aug 01 08:08:08 CST 2022
Mon Aug 01 08:08:08 CST 2022
Mon Aug 01 08:28:00 CST 2022
Mon Aug 01 10:50:56 CST 2022

 

mikechen睿哥

mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法