Java 1.8 LocalDateTime 日期时间

更新时间 2023-07-26 08:34:06

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书活动

目前, 星球 内第一个项目:全栈前后端分离博客项目,演示地址:http://116.62.199.48/, 1.0 版本已经更新完毕,正在更新 2.0 版本。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 224 小节,累计 35w+ 字,讲解图:1544 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1000+ 小伙伴加入,欢迎点击围观

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,我们可以更轻松地创建、修改、比较日期和时间,希望这个教程能帮你在代码中找到它的应用场景。