Date类和LocalDate类的使用

Java中有一个特殊的用来表示时间点的类Date,还有一个以日历表示法表示日期的类LocalDate,相比于其他类我们使用较少,但日期时间的使用之处还是很多的,我们也需要熟练掌握这两个类。

Date类
Date类表示一个时间点,如:"December 31,2020,23:59:59 GMT"

与大多数类相同,Date类的创建使用new关键字即可

Date birthDay = new Date();//构造了一个Date类型的对象,这个对象被初始化为当前的日期和时间System.out.println(new Date());//可以打印出时间

如果我们不使用new关键字,像这样

Date deadLine;

这样只是定义了一个对象变量deadLine,它可以引用Date类型的对象,所以一定要认识到,deadLine不是一个对象,而且实际上它也没有引用任何对象,所以此时还不能在deadLIne上使用任何Date方法。

所以我们必须先用new初始化deadLine,或者设置deadLine指向一个已有的变量。

deadLine = new Date;//deadLine = birthDay;

注意:我们要认识到一个底层原理,对象变量并没有实际上包含一个对象,它只是引用一个对象。任何对象变量的值都是对储存在另外一个地方的某个对象的引用。new操作符的返回值也是一个引用。

举个例子:

Date deadLine = new Date();

这个式子包含两个部分,表达式new Date()构造了一个Date类型的对象,它的值是对新创建对象的一个引用。这个引用存储在变量deadLine中。

Date类中有一个toString方法,它会将日期转换为字符串的形式返回

String s = new Date().toString();

LocalDate类:

Date有一个特点,即表示特定的时间点。

LocalDate类会使用日历表示法表示日期。

相比于Date类,我们不需要使用new通过构造器来构造LocalDate对象,而应该使用静态工厂方法,它会代表你调用构造器。

LocalDate.now();//构造一个新对象,表示构造这个对象的日期

可以提供年月日来构造一个特定日期的对象:

LocalDate newYearEve = LocalDate.of(2021,12,31);

LocalDate类包含了三个三个方法:getYear,getMonthValue,getDayOfMonth。可以单独得到年月日:​​​​​​​

int year = newYearEve.getYear();int month = newYearEve.getMonthValue();int day = newYearEve.getDayOfMonth();

方法plusDay可以得到距离当前对象指定天数的一个新对象​​​​​​​

LocalDate newDate = newYearEve.plusDay(500);//得到的newDate为newYearEve后500天的日期

注:实际上,Date类也有得到年月日的方法:getDay,getMonth,getYear,不过这些方法都已经被废弃了。

LocalDate API​​​​​​​

static LocalDate now();static LocalDate of(int yeay, int month, int day);int getYear();int getMonthValue();int getDayOfMonth();DayOfWeek getDayOfWeek();//得到当前日期是星期几,数字表示,即1表示星期一,2表示星期二,7表示星期日。LocalDate plusDate(int n);LocalDate minusDays(int n);//生成当前日期之前n天的日期

Date类和LocalDate类的使用_第1张图片

你可能感兴趣的:(java,Date,LocalDate)