一、获取当前时间
Java 8提供了三个主要的类来处理日期和时间:LocalDate、LocalTime和LocalDateTime。以下是这些类的简要说明:
-
LocalDate: 代表一个日期,它包含了年、月、日等信息,但没有时间信息。
-
LocalTime: 代表一个时间,它包含了小时、分钟、秒等信息,但没有日期信息。
-
LocalDateTime: 代表一个日期时间,它包含了年、月、日、小时、分钟、秒等信息。
//获取当前日期和时间
LocalDate date=LocalDate.now();
LocalTime time=LocalTime.now();
LocalDateTime dateTime=LocalDateTime.now();
System.out.println(String.format("当前日期:%s", date));
System.out.println(String.format("当前时间:%s", time));
System.out.println(String.format("当前日期时间:%s",dateTime));
输出结果:
二、类型转换
//类型转换
//字符串=>localdate
String strDate="2023-10-01";
date=LocalDate.parse(strDate);
System.out.println(String.format("指定日期:%s", date));
//整数值=>localdate
date=LocalDate.of(2022, 5, 1);
System.out.println(String.format("指定日期:%s", date));
输出结果:
三、日期计算
LocalDate now=LocalDate.now(); //获取当前时间
//十天后
System.out.println("十天后是:"+now.plus(10, ChronoUnit.DAYS));
//十天前
System.out.println("十天前是:"+now.plus(-10, ChronoUnit.DAYS));
四、计算时间间隔
Duration类可以用来处理一段时间间隔,例如两个时间点之间的时间差。
Duration duration = Duration.between(LocalTime.of(4, 20, 10), LocalTime.now()); // 计算两个日期时间对象之间的时间间隔
long days1 = duration.toDays(); // 获取天数
long hours = duration.toHours(); // 获取小时数
long minutes = duration.toMinutes(); // 获取分钟数
System.out.println(days1);
System.out.println(hours);
System.out.println(minutes);
输出结果:
Period类则可以用来处理一段时间段,例如两个日期之间的时间差。
LocalDate date1=LocalDate.parse("2023-10-01");
LocalDate date2=LocalDate.parse("2021-05-20");
//方式一
Period result=Period.between(date1, date2);
System.out.printf("间隔%d年%d月%d天",result.getYears(),result.getMonths(),result.getDays());
//方式二
long days=date1.toEpochDay()-date2.toEpochDay();
System.out.println(days);
输出结果:
五、获取指定日期
LocalDate today=LocalDate.now();
LocalDate firstDayOfMonth=today.with(TemporalAdjusters.firstDayOfMonth());
System.out.println("当前月的第一天:"+firstDayOfMonth);
LocalDate lastDayOfMonth=today.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("当前月的最后一天:"+lastDayOfMonth);
LocalDate firstDayOfnextMonth=today.with(TemporalAdjusters.lastDayOfMonth()).plus(1,ChronoUnit.DAYS);
System.out.println("下个月的第一天:"+firstDayOfnextMonth);
LocalDate lastWeekOfMonth=today.with(TemporalAdjusters.lastInMonth(DayOfWeek.MONDAY));
System.out.println("本月的最后一个星期一:"+lastWeekOfMonth);
输出结果: