Date类 DateFormat format parse SimpleDateFormat

java.util.Date:表示日期和时间的类,类Date表示特定的瞬间,精确到毫秒。

DateFormat:日期格式化

java.text.DateFormat:日期/时间格式化子类的抽象类

DateFormat是抽象类,所以不方便创建对象,所以我们利用他的子类 SimpleDateFormat 创建对象。

使用DateFormat类中的 format 方法,把日期解析为文本:

其实,我们是希望调用 format 方法达到格式化和解析的作用

SimpleDateFormat 构造方法里面是模式,你要以怎样的模式去显示 text ,sout(text)

模式有很多种:

把日期格式化成文本,按照 构造方法中给定的模式进行显示,

使用DateFormat类中的 parse 方法,把文本解析为日期:

public static void main(String[] args) throws ParseException {
        System.out.println("请输入出生日期 格式YYYY-MM-dd");

        String birthdayString = new Scanner(System.in).next();        //获取出生日期,键盘输入
        //将字符串日期,转成Date对象
        //创建SimpleDateFormat 对象,写日期模式(这一步主要是建立起模式)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//模式


        //调用方法parse,字符串转成日期对象//也能说将文本转换成日期对象
        Date birthdayDate = sdf.parse(birthdayString);      //Sat Jul 07 00:00:00 CST 2018 ==>> 2018-7-7

        Date todayDate = new Date();//获取当前日期对象

        //将两个日期转成毫秒值,Date类的方法getTime
        long birthdaySecond = birthdayDate.getTime();//结果是毫秒
        long todaySecond = todayDate.getTime();//
        long secone = todaySecond - birthdaySecond;
        if(secone<0){
            System.out.println("还没出生呢");
        }else {
            System.out.println(secone/1000/60/60/24+"天");
        }
    }

通过如上代码,我们进行分析:

我们通过模式来键入日期,这个时候,先要把这个键入的文本日期转换成日期对象 Date

转换成日期对象后,通过日期对象调用getTime()方法,这个时候就变成了毫秒,也就是那个日期离现在的毫秒。


练习:
    请使用日期时间相关的API,计算出一个人已经出生了多少天。
分析:
    1.使用Scanner类中的方法next,获取出生日期
    2.使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期
    3.把Date格式的出生日期转换为毫秒值
    4.获取当前的日期,转换为毫秒值
    5.使用当前日期的毫秒值-出生日期的毫秒值
    6.把毫秒差值转换为天(s/1000/60/60/24)

Date d = new Date(3000L);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

String format = sdf.format(d);

System.out.println(format);

相当于 sdf 模式 用format方法格式化为时间对象,也就是时间字符串。


String str = "2088年08月08日 08:08:08";

Date parse = sdf.parse(str);

System.out.println(parse);

想想,为什么格式化的时候用的是 String 而,解析的时候用的是Date ,前者是调用方法直接返回字符串,而后者返回的是时间对象。那是因为,在String format = sdf.format(d); 的时候,d 是作为对象传进来的。

String format(Date d);  根据指定格式格式化日期对象

Date parse(String s);   根据指定格式解析字符串

发布了98 篇原创文章 · 获赞 43 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_42352666/article/details/104719272