JDK8中新日期时间API
JDK8之前的更新:Date–>Calendar,但是一直存在缺陷,因此:
简而言之:Java8以后的java.time API 好用,前面的,不好用。
新时间日期API
java.time - 包含值对象的基础包
java.time.chrono - 提供对不同的日历系统的访问
java.time.format - 格式化和解析时间和日期
java.time.temporal - 包括底层框架和扩展特性
java.time.zone - 包含时区支持的类
说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一。
API
黄色实例化
橙色涉及get的操作
白色涉及set操作
灰色涉及加减操作
LocalDate,LocalTime,LocalDateTime 的使用
注:LocaLDateTime相较于LocaLDate、LocalTime,使用频率要高!
LocalDate,LocalTime,LocalDateTime 的使用:
package com.cyl.Date;
import org.junit.Test;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class JDK8DateTimeTest {
//LocalDate,LocalTime,LocalDateTime 的使用
@Test
public void testDate(){
//实例化1:now():获取当前的日期,时间,日期+时间
LocalDate localDate = LocalDate.now();//now即为现在
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
//实例化2:of():设置指定的年、月、日、时、分秒。没有偏移量
LocalDateTime localDateTime1 = LocalDateTime.of(2021, 8, 11, 11, 58, 18);
System.out.println(localDateTime1);
System.out.println("===============");
//getXxx
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getDayOfWeek());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getMinute());
System.out.println("===============");
//体现不可变性
LocalDate localDate1 = localDate.withDayOfMonth(22);//改为22号
System.out.println(localDate);//本身变量不变
System.out.println(localDate1);//返回值改变
LocalDateTime localDateTime2 = localDateTime.withHour(4);
System.out.println(localDateTime);//本身变量不变
System.out.println(localDateTime2);//返回值改变
System.out.println("===============");
//加操作,同样体现不可变性
LocalDateTime localDateTime3 = localDateTime.plusMonths(3);//加3个月
System.out.println(localDateTime);//本身变量不变
System.out.println(localDateTime3);//返回值改变
//减操作
LocalDateTime localDateTime4 = localDateTime.minusDays(6);//减6天
System.out.println(localDateTime);
System.out.println(localDateTime4);
}
}
结果:
当时运行代码的时间,用作参考