新的日期与时间API:Java 8的革命性改进!

举报
喵手 发表于 2025/06/09 17:53:34 2025/06/09
【摘要】 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,...

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在 Java 8 中,引入了新的日期与时间 API(java.time 包),该 API 旨在解决老旧的 DateCalendar 类的一些设计缺陷。新 API 提供了更加简洁、易用且功能丰富的日期和时间操作方式,其中包括 LocalDateLocalTimeLocalDateTime 等类。它们具有不可变性(immutable),更好地支持多线程环境,且非常易于操作。

在本篇教程中,我们将详细探讨 LocalDateLocalTimeLocalDateTime 的使用,帮助你更好地理解如何在 Java 中进行日期和时间的处理。


一、LocalDate 类的使用

LocalDate 表示没有时区的日期(年、月、日)。它非常适合用来表示出生日期、事件日期等,不涉及具体的时间部分。

1.1 创建 LocalDate 对象

  • now():获取当前系统的日期。
  • of(int year, int month, int dayOfMonth):通过指定年月日创建日期。
  • parse(CharSequence text):通过字符串解析为日期。
代码示例:使用 LocalDate 获取当前日期和创建日期
import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();
        System.out.println("当前日期:" + currentDate);

        // 创建特定日期
        LocalDate specificDate = LocalDate.of(2023, 5, 19);
        System.out.println("特定日期:" + specificDate);

        // 从字符串解析日期
        LocalDate parsedDate = LocalDate.parse("2023-05-19");
        System.out.println("解析日期:" + parsedDate);
    }
}

  在此代码中,我们通过 LocalDate.now() 获取当前日期,使用 LocalDate.of() 创建特定日期,使用 LocalDate.parse() 将字符串转换为日期。

1.2 常用的 LocalDate 方法

  • getYear():获取年份。
  • getMonth():获取月份。
  • getDayOfMonth():获取日期。
  • plusDays(long days):加上指定天数。
  • minusDays(long days):减去指定天数。
代码示例:使用 LocalDate 获取日期部分
public class LocalDateDetailsExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2023, 5, 19);

        // 获取年份、月份和日期
        System.out.println("年份:" + date.getYear());
        System.out.println("月份:" + date.getMonth());
        System.out.println("日:" + date.getDayOfMonth());

        // 日期加减
        LocalDate newDate = date.plusDays(10);
        System.out.println("加10天后的日期:" + newDate);

        LocalDate subtractedDate = date.minusDays(5);
        System.out.println("减5天后的日期:" + subtractedDate);
    }
}

二、LocalTime 类的使用

LocalTime 表示没有时区的时间(时、分、秒)。它适用于只需要表示时间部分的场景,例如设定某个活动的开始时间。

2.1 创建 LocalTime 对象

  • now():获取当前时间。
  • of(int hour, int minute):通过指定小时和分钟创建时间。
  • parse(CharSequence text):通过字符串解析为时间。
代码示例:使用 LocalTime 获取当前时间并创建时间
import java.time.LocalTime;

public class LocalTimeExample {
    public static void main(String[] args) {
        // 获取当前时间
        LocalTime currentTime = LocalTime.now();
        System.out.println("当前时间:" + currentTime);

        // 创建特定时间
        LocalTime specificTime = LocalTime.of(14, 30);
        System.out.println("特定时间:" + specificTime);

        // 从字符串解析时间
        LocalTime parsedTime = LocalTime.parse("14:30:00");
        System.out.println("解析时间:" + parsedTime);
    }
}

  在这个例子中,我们使用 LocalTime.now() 获取当前时间,使用 LocalTime.of() 创建特定时间,使用 LocalTime.parse() 将字符串解析为时间。

2.2 常用的 LocalTime 方法

  • getHour():获取小时。
  • getMinute():获取分钟。
  • getSecond():获取秒。
  • plusHours(long hours):加上指定小时数。
  • minusMinutes(long minutes):减去指定分钟数。
代码示例:使用 LocalTime 获取时间部分
public class LocalTimeDetailsExample {
    public static void main(String[] args) {
        LocalTime time = LocalTime.of(14, 30, 15);

        // 获取小时、分钟、秒
        System.out.println("小时:" + time.getHour());
        System.out.println("分钟:" + time.getMinute());
        System.out.println("秒:" + time.getSecond());

        // 时间加减
        LocalTime newTime = time.plusHours(2);
        System.out.println("加2小时后的时间:" + newTime);

        LocalTime subtractedTime = time.minusMinutes(30);
        System.out.println("减30分钟后的时间:" + subtractedTime);
    }
}

三、LocalDateTime 类的使用

LocalDateTimeLocalDateLocalTime 的结合,表示没有时区的日期和时间。它非常适合用来表示完整的日期时间(年月日时分秒)。

3.1 创建 LocalDateTime 对象

  • now():获取当前日期和时间。
  • of(int year, int month, int dayOfMonth, int hour, int minute):通过指定年月日时分创建日期时间。
  • parse(CharSequence text):通过字符串解析为日期时间。
代码示例:使用 LocalDateTime 获取当前日期和时间
import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        // 获取当前日期和时间
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println("当前日期和时间:" + currentDateTime);

        // 创建特定日期和时间
        LocalDateTime specificDateTime = LocalDateTime.of(2023, 5, 19, 14, 30);
        System.out.println("特定日期和时间:" + specificDateTime);

        // 从字符串解析日期和时间
        LocalDateTime parsedDateTime = LocalDateTime.parse("2023-05-19T14:30:00");
        System.out.println("解析日期和时间:" + parsedDateTime);
    }
}

  在这个例子中,我们使用 LocalDateTime.now() 获取当前日期和时间,使用 LocalDateTime.of() 创建特定日期和时间,使用 LocalDateTime.parse() 将字符串解析为日期时间。

3.2 常用的 LocalDateTime 方法

  • getYear():获取年份。
  • getMonth():获取月份。
  • getDayOfMonth():获取日期。
  • getHour():获取小时。
  • getMinute():获取分钟。
  • plusDays(long days):加上指定天数。
  • minusHours(long hours):减去指定小时数。
代码示例:使用 LocalDateTime 获取日期和时间部分
public class LocalDateTimeDetailsExample {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.of(2023, 5, 19, 14, 30, 15);

        // 获取年份、月份、日期、小时、分钟
        System.out.println("年份:" + dateTime.getYear());
        System.out.println("月份:" + dateTime.getMonth());
        System.out.println("日期:" + dateTime.getDayOfMonth());
        System.out.println("小时:" + dateTime.getHour());
        System.out.println("分钟:" + dateTime.getMinute());

        // 日期时间加减
        LocalDateTime newDateTime = dateTime.plusDays(5);
        System.out.println("加5天后的日期和时间:" + newDateTime);

        LocalDateTime subtractedDateTime = dateTime.minusHours(2);
        System.out.println("减2小时后的日期和时间:" + subtractedDateTime);
    }
}

总结:LocalDateLocalTimeLocalDateTime 的使用

Java 8 引入的新的日期和时间 API (java.time 包) 极大地简化了日期和时间的操作,避免了老旧 DateCalendar 类中的一些问题。具体而言:

  • LocalDate 用于表示没有时区的日期(年月日)。
  • LocalTime 用于表示没有时区的时间(时分秒)。
  • LocalDateTime 用于表示没有时区的日期和时间(年月日时分秒)。

这些类不仅具备不可变性,还提供了更简洁、易用的 API,支持流式操作,并且非常适合多线程环境。

通过理解并使用这些类,你能够更加高效地处理日期和时间操作,同时提高代码的可读性和可维护性。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。