概述
从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有:
LocalDate:不包含具体时间的日期。
LocalTime:不含日期的时间。
LocalDateTime:包含了日期及时间。
Instant:代表的是时间戳。
DateTimeFormatter 用于做时间的格式化和解析的
Duration:用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔
新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。
其次,新API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改。
LocalDate、LocalTime、LocalDateTime
他们 分别表示日期,时间,日期时间对象,他们的类的实例是不可变的对象。
他们三者构建对象和API都是通用的
构建对象的方式如下:
方法名
说明
public static Xxxx now();
静态方法,根据当前时间创建对象
LocaDate localDate = LocalDate.now();
LocalTime llocalTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
public static Xxxx of(…);
静态方法,指定日期/时间创建对象
LocalDate localDate1 = LocalDate.of(2099 , 11,11);
LocalTime localTime1 = LocalTime.of(11, 11, 11);
LocalDateTime localDateTime1 =
LocalDateTime.of(2020, 10, 6, 13, 23, 43);
public void test() {
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
LocalDate date = localDate.of(2088, 2, 14);
System.out.println(date);
}
LocalDate、LocalTime、LocalDateTime获取信息的API:
方法名
说明
public int geYear()
获取年
public int getMonthValue()
获取月份(1-12)
Public int getDayOfMonth()
获取月中第几天
Public int getDayOfYear()
获取年中第几天
Public DayOfWeek getDayOfWeek()
获取星期
public void test() {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("时间:"+dateTime);
System.out.println("获取年:"+dateTime.getYear());
System.out.println("获取月:"+dateTime.getMonthValue());
System.out.println("获取日:"+dateTime.getDayOfMonth());
System.out.println("一年中的第几天:"+dateTime.getDayOfYear());
System.out.println("获取星期:"+dateTime.getDayOfWeek().getValue());
}
转换相关的API:
LocalDateTime的转换API
方法名
说明
public LocalDate toLocalDate()
转换成一个LocalDate对象
public LocalTime toLocalTime()
转换成一个LocalTime对象
public void test() {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("时间:"+dateTime);
LocalDate date = dateTime.toLocalDate();
System.out.println("LocalDateTime 转为 LocalDate:"+date);
}
修改相关的API
LocalDateTime 综合了 LocalDate 和 LocalTime 里面的方法,所以下面只用 LocalDate 和 LocalTime 来举例。
这些方法返回的是一个新的实例引用,因为LocalDateTime 、LocalDate 、LocalTime 都是不可变的。
方法名
说明
plusDays, plusWeeks, plusMonths, plusYears
向当前 LocalDate 对象添加几天、
几周、几个月、几年
minusDays, minusWeeks, minusMonths, minusYears
从当前 LocalDate 对象减去几天、
几周、几个月、几年
withDayOfMonth, withDayOfYear, withMonth, withYear
将月份天数、年份天数、月份、
年 份 修 改 为 指 定 的 值
并 返 回 新 的 LocalDate 对象
isBefore, isAfter
比较两个 LocalDate