Java 1.8 LocalDateTime 日期时间

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/

截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观

1. LocalDateTime 是什么?

LocalDateTime 是 Java 8 中一个不可变的日期-时间对象,它表示了日期(年、月、日)和时间(小时、分钟、秒),但不包含时区

2. 创建 LocalDateTime 对象

使用 LocalDateTime 的静态方法 now(),你可以得到表示当前日期和时间的 LocalDateTime 对象:

import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) {
        // 获取当前的日期和时间
        LocalDateTime now = LocalDateTime.now();
        // 打印出当前的日期和时间
        System.out.println(now);
    }
}

也可以使用 of() 方法创建具有特定日期和时间的 LocalDateTime 对象:

// 创建一个代表 2023 年 7 月 25 日,时间为 14 点 30 分的 LocalDateTime 对象
LocalDateTime dateTime = LocalDateTime.of(2023, 7, 25, 14, 30);
System.out.println(dateTime);

3. 获取日期和时间的信息

你可以通过调用 LocalDateTime 对象的方法获取日期和时间的各个部分,例如:

LocalDateTime now = LocalDateTime.now();

// 获取年份
int year = now.getYear();
// 获取月份
int month = now.getMonthValue();
// 获取日期
int day = now.getDayOfMonth();

// 获取小时
int hour = now.getHour();
// 获取分钟
int minute = now.getMinute();
// 获取秒
int second = now.getSecond();

// 打印结果
System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second);

4. 修改日期和时间

由于 LocalDateTime 是不可变的,所有修改日期和时间的操作都会返回一个新的 LocalDateTime 对象。例如,你可以使用各种 plusminus 方法来添加或减少日期和时间的各个部分:

LocalDateTime now = LocalDateTime.now();

// 增加一天
LocalDateTime tomorrow = now.plusDays(1);
// 减少一个小时
LocalDateTime anHourAgo = now.minusHours(1);

System.out.println(tomorrow);
System.out.println(anHourAgo);

5. 比较日期和时间

可以使用 isBefore()isAfter() 方法比较两个 LocalDateTime 对象:

LocalDateTime dateTime1 = LocalDateTime.of(2023, 7, 25, 12, 30);
LocalDateTime dateTime2 = LocalDateTime.of(2023, 7, 26, 12, 30);

// 检查 dateTime1 是否在 dateTime2 之前
boolean isBefore = dateTime1.isBefore(dateTime2); 
System.out.println(isBefore);  // 输出:true

// 检查 dateTime1 是否在 dateTime2 之后
boolean isAfter = dateTime1.isAfter(dateTime2); 
System.out.println(isAfter);  // 输出:false

6. 总结

Java 8 的 LocalDateTime 类为处理日期和时间提供了强大且灵活的工具。通过使用 LocalDateTime,我们可以更轻松地创建、修改、比较日期和时间,希望这个教程能帮你在代码中找到它的应用场景。