JDK8的日期和时间的API
JDK8的日期和时间的API
public class JDK8DateTimeTest {
/*
LocalDate、LocalTime、LocalDateTime 的使用
说明:
1.LocalDateTime相较于LocalDate、LocalTime,使用频率要高
2.类似于Calendar
*/
@Test
public void test1(){
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);//2022-02-21
System.out.println(localTime);//21:13:46.404
System.out.println(localDateTime);//2022-02-21T21:13:46.404
//of():设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime dateTime = LocalDateTime.of(2021, 12, 4, 21, 56, 7);//2021-12-04T21:56:07
System.out.println(dateTime);
//getXxx():获取相关的属性
System.out.println(dateTime.getDayOfMonth());//4
System.out.println(dateTime.getDayOfWeek());//SATURDAY
//体现了不可变性
//withXxx():设置相关的属性
LocalDate localDate1 = localDate.withDayOfMonth(18);
System.out.println(localDate);//2022-02-21
System.out.println(localDate1);//2022-02-18
//plusXxx()
LocalDateTime localDateTime1 = localDateTime.plusMonths(3);
System.out.println(localDateTime);//2022-02-21T21:33:49.310
System.out.println(localDateTime1);//2022-05-21T21:33:49.310
LocalDateTime localDateTime2 = localDateTime.minusHours(5);
System.out.println(localDateTime);//2022-02-21T21:34:43.310
System.out.println(localDateTime2);//2022-02-21T16:34:43.310
}
/*
Instant的使用:类似于java.util.Date类
*/
@Test
public void test2(){
Instant instant = Instant.now();//now():获取本初子午线对应的标准时间
System.out.println(instant);//2022-02-21T13:41:02.839Z 中时区的时间
//添加时间的偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);//2022-02-21T21:42:33.715+08:00
//toEpochMilli():获取自1970年1月1日0时0分0秒(UFC)开始的毫秒数 --> Date类中的getTime()
long milli = instant.toEpochMilli();
System.out.println(milli);//1645451147741
//ofEpochMilli():通过给定的毫秒数,获取Instant实例 --> new Date(Long millis)
Instant instant1 = Instant.