JAVA8 localDate的简单使用
测试代码
package com.mutouren.user.controller;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.ValueRange;
@SuppressWarnings("all")
public class DateTest {
public static void main(String[] args) {
//获取当前日期
LocalDate localDate = LocalDate.now(); //2021-03-15
//格式化日期
String format = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//2021-03-15
//日期加2两天 正数代表加 负数代表减
LocalDate plusDays = localDate.plusDays(2L);//2021-03-17
//日期加2个月 正数代表加 负数代表减
LocalDate plusMonths = localDate.plusMonths(2L);//2021-05-15
//日期减一周 正数代表加 负数代表减
LocalDate plusWeeks = localDate.plusWeeks(-1L);//2021-03-08
//日期减一年 正数代表加 负数代表减
LocalDate plusYears = localDate.plusYears(-1L);//2020-03-15
//通用日期算法 第一个参数是加减日期的数值,第二个参数是在日期的哪个量级进行操作
localDate.plus(-1, ChronoUnit.DAYS);
//计算两个时间间隔多少年多少月 多少日
intervalYearAndMonthAndDay();
//计算间隔了多少年 或 多少月 或 多少天
intervalDays();
//获取本月第一天
LocalDate date = localDate.with(TemporalAdjusters.firstDayOfMonth());//2021-03-01
//下个月第一天
LocalDate date1 = localDate.with(TemporalAdjusters.firstDayOfNextMonth());//2021-04-01
//明年第一天
LocalDate date2 = localDate.with(TemporalAdjusters.firstDayOfNextYear());//2022-01-01
//本年第一天
LocalDate date3 = localDate.with(TemporalAdjusters.firstDayOfYear());//2021-01-01
//本月最后一天
LocalDate date4 = localDate.with(TemporalAdjusters.lastDayOfMonth());//2021-03-31
//本年最后一天
LocalDate date5 = localDate.with(TemporalAdjusters.lastDayOfYear());//2021-12-31
//从本月算的第一个周五 正数从月初往后算 负数从月末往前算
//参数一: 第几个
//参数二: 周几
LocalDate date6 = localDate.with(TemporalAdjusters.dayOfWeekInMonth(-9, DayOfWeek.FRIDAY));
//本月的第一个周五
LocalDate date7 = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.FRIDAY));
//本月的最后一个周五
LocalDate date8 = localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY));
//下一个周五
LocalDate date9 = localDate.with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
//从今往后最近的一个周五
LocalDate date10 = localDate.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));
//上一个周五
LocalDate date11 = localDate.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
//从今往前最近的一个周五
LocalDate date12 = localDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY));
//获取本月的第几天
LocalDate withDayOfMonth = localDate.withDayOfMonth(4);//2021-03-04
//获取此日期具体的时间
LocalDateTime localDateTime = localDate.atTime(1, 3);
//先比较年份 年份不同则返回差值 年份相同比较月份 月份不同返回月份的差值
//月份相同比较天数 天数不同返回天数的差值 天数也一样 则返回0
int i = localDate.compareTo(LocalDate.parse("2021-03-15"));
//判断两个值是否一致 包括类型
boolean equals = localDate.equals(LocalDate.parse("2021-03-15"));
//本月的第几天
int dayOfMonth = localDate.getDayOfMonth();
//周几
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
//今年的第几天
int dayOfYear = localDate.getDayOfYear();
//几月
Month month = localDate.getMonth();
//几月数字
int monthValue = localDate.getMonthValue();
//该日期是否在 2020-01-09 之后
boolean after = localDate.isAfter(LocalDate.parse("2020-01-09"));
//该日期是否在 2020-01-09 之前
boolean before = localDate.isBefore(LocalDate.parse("2020-01-09"));
//该日期是否和2021-03-15 相等
boolean equal = localDate.isEqual(LocalDate.parse("2021-03-15"));
//该日期是否是闰年
boolean leapYear = localDate.isLeapYear();
//本月天数
int lengthOfMonth = localDate.lengthOfMonth();
//本年天数
int lengthOfYear = localDate.lengthOfYear();
//减去指定的天数 还有月 周 年
LocalDate localDate1 = localDate.minusDays(2);
//初始化日期
LocalDate of = LocalDate.of(2021, 1, 1);
//返回改日期在某个时间段内的校验结果 比如 一年的周数从1-53
ValueRange range = localDate.range(ChronoField.ALIGNED_WEEK_OF_YEAR);
//本年的第几天
LocalDate localDate2 = localDate.withDayOfYear(5);
//本年第4个月的今天
LocalDate localDate3 = localDate.withMonth(4);
//2021年的本月本日
LocalDate localDate4 = localDate.withYear(2021);
}
private static void intervalDays() {
LocalDate localDate1 = LocalDate.parse("2015-08-28");
LocalDate LocalDate2 = LocalDate.parse("2021-09-30");
//localDate1 到 LocalDate2 隔了多少年
long years = localDate1.until(LocalDate2, ChronoUnit.YEARS);
System.out.println("years = " + years);//6
//localDate1 到 LocalDate2 隔了多少月
long months = localDate1.until(LocalDate2, ChronoUnit.MONTHS);
System.out.println("months = " + months);//73
//localDate1 到 LocalDate2 隔了多少天
long days = localDate1.until(LocalDate2, ChronoUnit.DAYS);
System.out.println("days = " + days);//2225
}
private static void intervalYearAndMonthAndDay() {
LocalDate localDate1 = LocalDate.parse("2015-08-28");
LocalDate LocalDate2 = LocalDate.parse("2021-09-30");
//localDate1 的日期到localDate2的日期 因此数小的日期在前面
int years = localDate1.until(LocalDate2).getYears();
int months = localDate1.until(LocalDate2).getMonths();
int days = localDate1.until(LocalDate2).getDays();
System.out.println("间隔:" + years + " 年" + months + " 个月 " + days + " 天");//6 年1 个月 2 天
}
}