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

本文介绍了Java8中新增的日期时间API,包括关键类如Instant、LocalDate、LocalTime等,并提供了17种日期处理方式的实战示例。

👉死磕 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);

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_子栖_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值