Java之DateFormat类

时间:2021-07-16 07:35:57

DateFormat类概述

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。
  • 格式化:按照指定的格式,从Date对象转换为String对象。
  • 解析:按照指定的格式,从String对象转换为Date对象。

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类 java.text.SimpleDateFormat 。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:
  • public SimpleDateFormat(String pattern) :用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式
格式规则:
常用的格式规则为:
Java之DateFormat类

注意事项:

  • 模式中的字母不能更改,连接模式的符号可以改变 例如:"yyyy年MM月dd日 HH时mm分ss秒"

常用方法

DateFormat类的常用方法有:
  • public String format(Date date) :将Date对象格式化为字符串。
package demo03;

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

/*
     使用DateFormat类中的方法format,把日期格式化为文本
     使用步骤:
         1.创建SimpleDateFormat对象,构造方法中传递指定的模式
         2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
  */
public class DemoFormat {
    public static void main(String[] args) {
        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        /*2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
        String format(Date date)  按照指定的模式,把Date日期,格式化为符合模式的字符串
        */
        String format = sdf.format(new Date());
        System.out.println("今天的日期是"+format);
    }
}

代码执行后的结果

Java之DateFormat类

  • public Date parse(String source) :将字符串解析为Date对象。
package demo03;

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

/*
     使用DateFormat类中的方法parse,把文本解析为日期
     使用步骤:
        1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
        注意:
            public Date parse(String source) throws ParseException
            parse方法声明了一个异常叫ParseException
            如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
            调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理
 */
public class DemoParse {
    public static void main(String[] args) throws ParseException {
        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        //2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
        //Date parse(String source)  把符合模式的字符串,解析为Date日期
        Date date = sdf.parse("219年12月08日 15时51分54秒");
        System.out.println(date);
    }
}

代码执行后的结果

Java之DateFormat类

需求

请使用日期时间相关的API,计算出一个人已经出生了多少天。

代码实现

package demo03;

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

/*
    练习:
        请使用日期时间相关的API,计算出一个人已经出生了多少天。
    分析:
        1.使用Scanner类中的方法next,获取出生日期
        2.使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期
        3.把Date格式的出生日期转换为毫秒值
        4.获取当前的日期,转换为毫秒值
        5.使用当前日期的毫秒值-出生日期的毫秒值
        6.把毫秒差值转换为天(s/1000/60/60/24)
 */
public class DemoTest {
    public static void main(String[] args) throws ParseException {
        //1.使用Scanner类中的方法next,获取出生日期
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的出生日期,格式:yyyy-MM-dd");
        String birthdayDateString = sc.next();
        //2.使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthdayDate = sdf.parse(birthdayDateString);
        //3.把Date格式的出生日期转换为毫秒值
        long birthdayDateTime = birthdayDate.getTime();
        //4.获取当前的日期,转换为毫秒值
        long todayTime = new Date().getTime();
        //5.使用当前日期的毫秒值-出生日期的毫秒值
        long time = todayTime - birthdayDateTime;
        //6.把毫秒差值转换为天(s/1000/60/60/24)
        System.out.println("您已经出生了" + time / 1000 / 60 / 60 / 24 + "天");
    }
}

代码执行后的结果

Java之DateFormat类