1. LocalDate
1.1 初始化
LocalDate today = LocalDate.now();//获取当前日期 年月日
System.out.println(today);// yyyy-MM-dd 2020-05-29
LocalDate d0 = LocalDate.of(2020, 5, 30);// 年 月 日
System.out.println(d0);// yyyy-MM-dd 2020-05-30(这里的月不用从0开始哦)
LocalDate d1 = LocalDate.parse("2020-05-28");// 一定要yyyy-MM-dd格式的
System.out.println(d1);// 2020-05-28
1.2 使用
// 判断当天是否是本月最后一天
LocalDate d0 = LocalDate.of(2020, 5, 31);// 2020-05-31 月底(本月最后一天)
System.out.println(d0.getDayOfMonth());// 31 该对象的日期是这个月第几天
System.out.println(d0.lengthOfMonth());// 31 这个月有几天
System.out.println(d0.getDayOfMonth() == d0.lengthOfMonth());// true 是否是月底最后一天
// 日期先后判断
LocalDate d3 = LocalDate.parse("2020-05-01");// 开始日期
LocalDate d4 = LocalDate.parse("2020-05-15");// 中间日期
LocalDate d5 = LocalDate.parse("2020-05-31");// 结束日期
// 判断d4在d3和d5中间(d3 <= d4 && d4 <= d5)
// PS. 因为不能判断小于等于,所以这里用这种方式进行判断,如果有更好的办法,请告诉我,谢谢
System.out.println((d3.isBefore(d4) || d3.isEqual(d4)) && (d4.isBefore(d5) || d4.isEqual(d5)));
// 获取本月
System.out.println(LocalDate.now().getMonth().getValue());// 6
// 获取本年
System.out.println(LocalDate.now().getYear());// 2020
// 获取上一年
System.out.println(LocalDate.now().minusYears(1).getYear());// 2019
// 获取精确到月的当前日期字符串
String currMon = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
System.out.println(currMon);// 2020-06
// 获取上个月日期
LocalDate lastMonDate = LocalDate.now().minusMonths(1);// 减去一个月
System.out.println(lastMonDate);
2. LocalTime
2.1 初始化
LocalTime t0 = LocalTime.now();// 获取当前时间(精确到毫秒)
System.out.println(t0);// 11:59:59.123
2.2 使用
LocalTime t0 = LocalTime.now();// 获取当前时间(精确到毫秒)
System.out.println(t0);// 11:59:59.123
LocalTime t1 = t0.withNano(0);// 获取当前时间(精确到秒 其实就是把毫秒替换成0了)
System.out.println(t1);// 11:59:59
3. LocalDateTime
3.1 初始化
// 从特定格式解析成对象
String str = "2020-06-12 10:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);// 2020-06-12T10:59
3.2 使用
// 输出特定格式字符串
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
// 计算两个时间之间的间隔
String str = "2020-06-12 10:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime startTime = LocalDateTime.parse(str, formatter);// 开始时间
Duration d = Duration.between(startTime, LocalDateTime.now());// 计算间隔(开始时间, 结束时间)
// 这里返回值是long类型,所以没有小数,奇怪的是没有间隔秒数的方法
System.out.println(d.toDays());// 间隔天数
System.out.println(d.toHours());// 间隔小时数
System.out.println(d.toMinutes());// 间隔分钟数
System.out.println(d.toMillis());// 间隔毫秒数
System.out.println(d.toNanos());// 间隔纳秒数