Date
在jdk1.8之前,java中的日期和时间是一类的,从1.8之后对日期和时间体系重新做了规划,划分出一个新的包 - java.time包,这个包中包含了日期、时间、时区、日历、单位。
Date,是java中最老的日期和时间类,后续退出了很多取代date的类,但是目前位置使用最多的还是Date。
Calendar:jdk1.1提供的日历类。
java.time:1.8之后提供的一个全新的包,将日期和时间进行拆分。
对于Date(),我们可以利用它来获取目前的时间,一般默认就是当前时间,也可以获取指定时间,也能获得指定毫秒值,那么这个毫秒值从何而来,在计算机中一般是以1970-1-1 00:00:00开始到指定的日期的毫秒值。
package com.itheima.date;
import java.util.Date;
public class DateDemo1 {
public static void main(String[] args) {
//构建Date对象,如果不指定,默认是当前的系统时间
Date d1=new Date();
System.out.println(d1);
//指定时间
Date d2=new Date(100,11,25);
System.out.println(d2);
//指定毫秒值 1970-1-1 00:00:00开始到指定的日期的毫秒值
Date d3=new Date(4343546L);
System.out.println(d3);
}
}
运行结果:
Calendar
对于Calendar(),这个方法可以用于获取日历对象,也能获取今年是第几周,其有相当多的方法,可以自行查略API文档。
package com.itheima.date;
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//获取日历对象
Calendar c=Calendar.getInstance();
System.out.println(c);
//获取这周是今年的第几周
int i = c.get(Calendar.WEEK_OF_YEAR);
System.out.println(i);
}
}
运行结果:
LocalDate
LocalDate()用于表示日期类,不含时间,同样可以表示当前的日期,也可以指定日期,或是指定日期的几周之后还是几周之前,或是判断早晚。
package com.itheima.date;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class LocalDemo {
public static void main(String[] args) {
//用于表示日期类,不含时间
//表示当前的日期
LocalDate ld=LocalDate.now();
System.out.println(ld);
//指定时间
LocalDate ld2=LocalDate.of(2008,5,19);
System.out.println(ld2);
//三周之后
System.out.println(ld2.plus(3, ChronoUnit.WEEKS));
//之前
System.out.println(ld2.minus(3,ChronoUnit.WEEKS));
//判断早晚
System.out.println(ld.isAfter(ld2));
//判断闰年
System.out.println(ld2.isLeapYear());
}
}
运行结果:
事实上,对于Date这类关于时间的API,使用的并不多,使用那些方法应该按需求去文档中查找,一般只需要掌握以上基本方法。