1 packagecom.gzh.time;2
3 importjava.time.DayOfWeek;4 importjava.time.Instant;5 importjava.time.LocalDate;6 importjava.time.LocalDateTime;7 importjava.time.LocalTime;8 importjava.time.Period;9 importjava.time.ZoneId;10 importjava.time.format.DateTimeFormatter;11 importjava.time.temporal.TemporalAdjusters;12 importjava.util.Calendar;13 importjava.util.Date;14
15 importorg.junit.Test;16
17 public classTimeTest {18
19 //LocalDate;LocalTime;LocalDateTime
20 @Test21 public voidtest() {22
23 //获取当前时间:2020-03-08
24 System.out.println(LocalDate.now());25 //获取当前时间:15:20:40.158
26 System.out.println(LocalTime.now());27 //获取当前时间:2020-03-08T15:20:40.158
28 System.out.println(LocalDateTime.now());29
30 //DateTimeFormatter---ISO系类转化31 //BASIC_ISO_DATE :20200308
32 System.out.println("BASIC_ISO_DATE :" +DateTimeFormatter.BASIC_ISO_DATE.format(LocalDateTime.now()));33 //ISO_DATE :2020-03-08
34 System.out.println("ISO_DATE :" +DateTimeFormatter.ISO_DATE.format(LocalDateTime.now()));35 //ISO_DATE_TIME :2020-03-08T16:33:27.489
36 System.out.println("ISO_DATE_TIME :" +DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()));37 //ISO_LOCAL_DATE :2020-03-08
38 System.out.println("ISO_LOCAL_DATE :" +DateTimeFormatter.ISO_LOCAL_DATE.format(LocalDateTime.now()));39 //ISO_LOCAL_DATE_TIME :2020-03-08T16:33:27.49
40 System.out.println("ISO_LOCAL_DATE_TIME :" +DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(LocalDateTime.now()));41 //ISO_LOCAL_TIME :16:33:27.49
42 System.out.println("ISO_LOCAL_TIME :" +DateTimeFormatter.ISO_LOCAL_TIME.format(LocalDateTime.now()));43 //ISO_ORDINAL_DATE :2020-068
44 System.out.println("ISO_ORDINAL_DATE :" +DateTimeFormatter.ISO_ORDINAL_DATE.format(LocalDateTime.now()));45 //ISO_TIME :16:33:27.49
46 System.out.println("ISO_TIME :" +DateTimeFormatter.ISO_TIME.format(LocalDateTime.now()));47 //ISO_WEEK_DATE :2020-W10-7
48 System.out.println("ISO_WEEK_DATE :" +DateTimeFormatter.ISO_WEEK_DATE.format(LocalDateTime.now()));49
50 //DateTimeFormatter格式转化
51 DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); //ISO_DATE;ISO_LOCAL_DATE
52 DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm:ss");53 DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");54 //转化日期:2020-03-08
55 System.out.println(dtf1.format(LocalDate.now()));56 //转化日期:2020-03-08
57 System.out.println(dtf1.format(LocalDateTime.now()));58 //转化日期:15:20:40
59 System.out.println(dtf2.format(LocalTime.now()));60 //转化日期:15:20:40
61 System.out.println(dtf2.format(LocalDateTime.now()));62 //转化日期:2020-03-08 15:20:40
63 System.out.println(dtf3.format(LocalDateTime.now()));64
65 LocalDateTime ldt1 = LocalDateTime.of(2020, 12, 12, 0, 0, 0);66 //LocalDateTime-->LocalDate
67 LocalDate localDate1 =ldt1.toLocalDate();68 //LocalDateTime-->LocalTime
69 LocalTime localTime1 =ldt1.toLocalTime();70
71 //java.util.Date --> LocalDateTime
72 LocalDateTime ldt2 = LocalDateTime.ofInstant(newDate().toInstant(), ZoneId.systemDefault());73 //LocalDateTime -->java.util.Date
74 LocalDate localDate2 =LocalDate.now();75 LocalTime localTime2 =LocalTime.now();76 LocalDateTime localDateTime2 =LocalDateTime.of(localDate2, localTime2);77 Instant instant =localDateTime2.atZone(ZoneId.systemDefault()).toInstant();78 System.out.println(Date.from(instant));79
80 //LocalDate常用81 //计算时间差--天数差
82 LocalDate localDate3 = LocalDate.of(2008, 1, 1);83 LocalDate localDate4 = LocalDate.of(2018, 12, 12);84 //天数差:3998
85 System.out.println("天数差 :" + (localDate4.toEpochDay()-localDate3.toEpochDay()));86
87 //计算当年是否是闰年:isLeapYear()
88 System.out.println("isLeapYear :" +LocalDate.now().isLeapYear());89
90 //计算生日
91 Period betweenDate = Period.between(LocalDate.now(), LocalDate.of(2000, 12, 31));92 int age =betweenDate.getYears();93 System.out.println(age);94
95 //利用时间矫正器TemporalAdjuster
96 LocalDate localDate5 =LocalDate.now();97 //LocalDate.with(TemporalAdjuster adjuster):利用TemporalAdjuster的工具类TemporalAdjusters
98 LocalDate firstDayOfMonth =localDate5.with(TemporalAdjusters.firstDayOfMonth());99 System.out.println("firstDayOfMonth :"+firstDayOfMonth);100 TemporalAdjusters.firstDayOfYear();101 TemporalAdjusters.lastDayOfMonth();102 TemporalAdjusters.lastDayOfYear();103 TemporalAdjusters.firstDayOfNextMonth();104 TemporalAdjusters.firstDayOfNextYear();105 //计算某一天的下一个工作日 :@FunctionalInterface--TemporalAdjuster
106 LocalDate nextWorkDay = localDate5.with((time)->{107 LocalDate localDate =(LocalDate) time;108 if(localDate.getDayOfWeek().equals(DayOfWeek.FRIDAY)) {109 return localDate.plusDays(3);110 }else if(localDate.getDayOfWeek().equals(DayOfWeek.SATURDAY)){111 return localDate.plusDays(2);112 }else{113 return localDate.plusDays(1);114 }115
116 });117 System.out.println("nextWorkDay" +nextWorkDay);118 }119
120 }