死磕 Java8 新特性,17 种日期处理方式!

发布于:2022-12-07 ⋅ 阅读:(899) ⋅ 点赞:(0)

👉死磕 Java8 新特性,17 种日期处理方式! 💎

csdn

Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。 全新API的众多好处之一就是,明确了日期时间概念,例如: 瞬时(instant)、 长短(duration)、 日期、 时间、 时区和 周期。 同时继承了Joda 库按人类语言和计算机各自解析的时间处理方式。不同于老版本,新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。

关键类

在这里插入图片描述
Instant:瞬时实例。
LocalDate:本地日期,不包含具体时间。
LocalTime:本地时间,不包含日期。
LocalDateTime:组合了日期和时间,但不包含时差和时区信息。
ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。

实战


1.获取当前的日期

LocalDate now = LocalDate.now();
System.out.println(now);

在这里插入图片描述

2.获取年、月、日信息

LocalDate now = LocalDate.now();
System.out.println(now.getYear());
System.out.println(now.getMonth());
System.out.println(now.getDayOfMonth());

在这里插入图片描述

3.处理特定日期

LocalDate of = LocalDate.of(2022, 12, 15);
System.out.println(of);

在这里插入图片描述

4.判断两个日期是否相等

LocalDate now = LocalDate.now();
LocalDate of = LocalDate.of(2022, 9, 26);
if (now.equals(of)){
	System.out.println("日期相等...");
}

在这里插入图片描述

5.检查像生日这种周期性事件

LocalDate now = LocalDate.now();
LocalDate of = LocalDate.of(2022, 9, 26);
MonthDay monthDay = MonthDay.of(of.getMonthValue(), of.getDayOfMonth());
MonthDay from = monthDay.from(now);
if (monthDay.equals(from)){
   System.out.println("今天是纪念日...");
}  else {
   System.out.println("今天是非纪念日...");
}

在这里插入图片描述

6.获取当前的时间

LocalTime now = LocalTime.now();
System.out.println(now);

在这里插入图片描述

7.在现有的时间上增加小时

LocalTime now = LocalTime.now();
LocalTime localTime = now.plusHours(2);
System.out.println(localTime);

在这里插入图片描述

8.如何计算一个星期之后的日期

LocalDate now = LocalDate.now();
LocalDate plus = now.plus(1, ChronoUnit.WEEKS);
System.out.println("当前时间:"+ now);
System.out.println("一周后时间:"+ plus);

在这里插入图片描述

9.计算一年前或一年后的日期

LocalDate now = LocalDate.now();
LocalDate minus = now.minus(1, ChronoUnit.YEARS);
System.out.println("当前时间:"+ now);
System.out.println("一年前时间:"+ minus);

在这里插入图片描述

10.Clock时钟类

//获取时间戳
System.out.println(Clock.systemUTC().millis());

在这里插入图片描述

11.判断日期是早于还是晚于另一个日期

LocalDate now = LocalDate.now();
LocalDate of = LocalDate.of(2022, 11, 25);
if (of.isAfter(now)) {
     System.out.println("of 时间 晚于 now 时间...");
}

if (now.isBefore(of)) {
     System.out.println("now 时间 早于 of 时间...");
}

在这里插入图片描述

12.处理时区

ZoneId of = ZoneId.of("America/New_York");
LocalDateTime now = LocalDateTime.now();
ZonedDateTime of1 = ZonedDateTime.of(now, of);
System.out.println("现在的日期和时间在特定的时区 : "+ of1);

在这里插入图片描述

13.如何体现出固定日期

YearMonth now = YearMonth.now();
YearMonth of = YearMonth.of(2022, 9);
System.out.println(now);
System.out.printf("这月有%d天", of.lengthOfMonth());

在这里插入图片描述

14.检查闰年

LocalDate now = LocalDate.now();
if (now.isLeapYear()) {
    System.out.println("今年是闰年...");
} else {
    System.out.println("今年不是闰年...");
}

在这里插入图片描述

15.计算两个日期之间的天数和月数

LocalDate now = LocalDate.now();
        LocalDate of = LocalDate.of(2022, 6, 20);
        Period between = Period.between(now, of);
        System.out.println("两月天数相差:"+ between.getDays());

在这里插入图片描述

16.获取当前的时间戳

System.out.println(Instant.now());

在这里插入图片描述

17.使用预定义的格式化工具去解析或格式化日期

String parse = "20220926";
LocalDate parse1 = LocalDate.parse(parse, DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(parse1);

在这里插入图片描述

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到