干了这碗毒鸡汤 ~ ~ 全是代码。。。(^m^ )日期类API:Date 、 SimpleDateFormat 、 Calendar

目录

        一、Date 类

        1、概述

        2、Date 类无参、带参构造方法

        3、常用方法:public long getTime()

        4、常用方法:public void setTime(long time)

        二、SimpleDateFormat 类

        1、无参、带参构造方法

        2、格式化 public final String format(Date date)

        3、解析 public Date parse(String source)

        三、Calendar 类

        1、概述

        2、getInstance()

        3、常用方法:public int get​(int field)

        4、常用方法:public abstract void add(int field, int amount)

        5、常用方法:public final void set(int year, int month, int date)

        四、日期类经常涉及到的使用


先看概述,然后用代码讲解

        一、Date 类

        1、概述

        Date 代表了一个特定的时间,精确到毫秒。

        2、Date 类无参、带参构造方法

        ① 无参构造方法

        分配一个 Date对象,并初始化(将系统时间赋值为d1),以便它代表它被分配的时间,精确到毫秒。

//分配一个 Date对象,并初始化(将系统时间赋值为d1),以便它代表它被分配的时间,精确到毫秒
Date d1 = new Date();
System.out.println(d1);
输出的是当前系统时间,如:Mon Nov 01 15:46:01 CST 2021。

        注意:输出的不是字符串类型,是Date 类数据。后面我们会讲到如何将Date 类数据转成我们常见的年月日表现格式。


        ② 带参构造方法

        分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数。

//分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
long date = 1000*60*60;
Date d2 = new Date(date);
System.out.println(d2);
输出的是基准时间:Thu Jan 01 09:00:00 CST 1970 。

        3、常用方法:public long getTime()

        获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值。

Date d = new Date();//创建日期对象

//获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
System.out.println(d.getTime());
System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");

第一行输出的是系统当前时间与基准时间 之间的毫秒值。

第二行输出的是系统当前时间和基准时间 之间的年。


        4、常用方法:public void setTime(long time)

        设置时间,参数给的是毫秒值。

Date d = new Date();//创建日期对象
long time = 1000*60*60;

//设置时间,参数给的是毫秒值
d.setTime(time);
System.out.println(d);
输出的是:Thu Jan 01 09:00:00 CST 1970 。

Date d = new Date();//创建日期对象
long time = System.currentTimeMillis();
//System.currentTimeMillis() 获取当前时间的毫秒值。

//设置时间,参数给的是毫秒值
d.setTime(time);
System.out.println(d);
输出的是系统当前时间的Date 类 ,如:Mon Nov 01 15:46:01 CST 2021。

        二、SimpleDateFormat 类

        1、无参、带参构造方法

        无参构造方法:public SimpleDateFormat() ,构造一个SimpleDateFormat,使用默认模式和日期模式。

SimpleDateFormat sdf1 = new SimpleDateFormat();

        带参构造方法:public SimpleDateFormat(String pattern) ,构造一个SimpleDateFormat,使用给定的模式和默认的日期格式。

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

        日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,从‘A’ 到‘Z’以及从‘a’到‘z’引号的字母被解释为表示日期或时间字符串的组件的模式字母。

常用的字母模式 对应关系 常用的字母模式 对应关系
y H
M m
d s

        2、格式化 public final String format(Date date)

        从Date 到 String,日期格式化成日期/时间字符串。就是将Date 类型数据转成我们常见的年月日格式。

//创建日期对象
Date d = new Date();//当前系统时间

//使用给定的模式:yyyy年MM月dd日 HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

//日期格式化成日期/时间字符串
String s = sdf.format(d);
System.out.println(s);
输出的是年月日格式的当前系统时间,如:2021年11月01日 15:46:01 。

        3、解析 public Date parse(String source)

        从 String 到 Date,从给定字符串的开始解析文本以生成日期Date 类数据。

//创建日期对象
Date d = new Date();//当前系统时间

//使用给定模式:yyyy-MM-dd HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//字符串模式要与给定模式相同
String s = "2020-08-09 11:11:11";

//解析文本以生成日期Date 类数据
Date d = sdf2.parse(s);
System.out.println(d);
输出的是 Sun Aug 09 11:11:11 CST 2020 。

        三、Calendar 类

        1、概述

        Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

        2、getInstance()

            Calendar提供了一个类方法 getInstance() 用于获取Calendar对象,其日历段已使用当前日期和时间初始化。

//获取日历类对象
Calendar c = Calendar.getInstance();

        3、常用方法:public int get​(int field)

        返回给定日历字段的值。

Calendar c = Calendar.getInstance();//获取日历类对象

//返回给定日历字段的值
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;//月份编号是从0开始的,所以要加1
int date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
输出的是当前时间的年、月、日 。 

        4、常用方法:public abstract void add(int field, int amount)

        根据日历的规则,将指定的时间量添加或减去给定的日历字段。

//案例1:3年前的今天

Calendar c = Calendar.getInstance();//获取日历类对象

//根据日历的规则,将指定的时间量添加或减去给定的日历字段
c.add(Calendar.YEAR,-3);

year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
输出3年前的今天的年月日。

//案例2:10年后的10天前

Calendar c = Calendar.getInstance();//获取日历类对象

//根据日历的规则,将指定的时间量添加或减去给定的日历字段
c.add(Calendar.YEAR,10);
c.add(Calendar.DATE,-10);

year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
输出10年后的10天前的年月日。

        5、常用方法:public final void set(int year, int month, int date)

        设置当前日历的年月日。

Calendar c = Calendar.getInstance();//获取日历类对象

//设置当前日历的年月日
c.set(2050,10,10);

year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
输出:2050年11月10日 。

        四、日期类经常涉及到的使用

        求两个日期之间相隔的天数。
        思路:将两个字符串转成Date 类,分别计算他们与基准时间的间隔毫秒值,再计算这两个毫秒值之间的差值,最后将差值计算出天数。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();

String date1 = "2020-10-10";
String date2 = "2020-12-10"

cal.setTime(sdf.parse(date1));
long time1 = cal.getTimeInMillis();

cal.setTime(sdf.parse(date2));
long time2 = cal.getTimeInMillis();

long between_days = (time2 - time1) / (1000 * 3600 * 24);

if (between_days < 0) {
    between_days = -between_days;
}
System.out.println("间隔天数:" + between_days);

        输出:间隔天数:61

猜你喜欢

转载自blog.csdn.net/weixin_60808029/article/details/121096408