第六节 日期工具类
(1)java.util.Date(java官方设置的util包和Date类)
Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小 时、分、秒、年。
Date 类有如下两个构造方法:
• Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使 用该构造方法创建的对象可以获取本地的当前时间。
• Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开 始经过参数 date 指定的毫秒数。
Date 类的无参数构造方法获取的是系统当前的时间。
Date 类带 long 类型参数的构造方法获取的是距离 GMT 指定毫秒数的时间,60000 毫秒是一分钟,而 GMT(格林尼治标准时间)与 CST(中央标准时间)相差 8 小时,也就是说 1970 年 1 月 1 日 00:00:00 GMT 与 1970 年 1 月 1 日 08:00:00 CST 表示的是同一时间。 因此距离 1970 年 1 月 1 日 00:00:00 CST 一 分钟的时间为 1970 年 1 月 1 日 00:01:00 CST,即使用 Date 对象表示为 Thu Jan 01 08:01:00 CST 1970。
(2)java.util.Calendar(java官方设置的util包和Calendar类)
Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段 之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法。
创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象,其日历字段已 由当前日期和时间初始化。
创建方法:Calendar c = Calendar.getInstance();
Calendar 类中定义了许多常量,分别表示不同的意义。
• Calendar.YEAR:年份。
• Calendar.MONTH:月份。
• Calendar.DATE:日期。
• Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
• Calendar.HOUR:12小时制的小时。
• Calendar.HOUR_OF_DAY:24 小时制的小时。
• Calendar.MINUTE:分钟。
• Calendar.SECOND:秒。
• Calendar.DAY_OF_WEEK:星期几。
注意:如果整型变量 month 的值是 0,表示当前日历是在 1 月份;如果值是 11,则表示当前日历在 12 月 份。
例子1:本月月初
var c = Calendar.getInstance();
System.out.printf("%tF %<tT %<tA %<tp%n",c); //输出 2023-06-07 19:39:58 星期三 下午
//本月月初
c.set(Calendar.MONTH,c.get(Calendar.MONTH));
c.set(Calendar.DATE,1);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
System.out.printf("%tF %<tT %<tA %<tp%n",c); //输出 2023-06-01 00:00:00 星期四 上午
例子2:本月月末
//本月月末
c.set(Calendar.MONTH,c.get(Calendar.MONTH)+1);
c.set(Calendar.DATE,0);
c.set(Calendar.HOUR_OF_DAY,23);
c.set(Calendar.MINUTE,59);
c.set(Calendar.SECOND,59);
c.set(Calendar.MILLISECOND,999);
System.out.printf("%tF %<tT %<tA %<tp%n",c);
完结!!!
给兄弟们留几个小作业
1.分辨1000年~2023年这些年中有哪些是闰年?
2.1000年~2023年些年的生肖属性分别是什么?