新的日期与时间API:Java 8的革命性改进!
开篇语
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!
前言
在 Java 8 中,引入了新的日期与时间 API(java.time
包),该 API 旨在解决老旧的 Date
和 Calendar
类的一些设计缺陷。新 API 提供了更加简洁、易用且功能丰富的日期和时间操作方式,其中包括 LocalDate
、LocalTime
和 LocalDateTime
等类。它们具有不可变性(immutable),更好地支持多线程环境,且非常易于操作。
在本篇教程中,我们将详细探讨 LocalDate
、LocalTime
和 LocalDateTime
的使用,帮助你更好地理解如何在 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
类的使用
LocalDateTime
是 LocalDate
和 LocalTime
的结合,表示没有时区的日期和时间。它非常适合用来表示完整的日期时间(年月日时分秒)。
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);
}
}
总结:LocalDate
、LocalTime
和 LocalDateTime
的使用
Java 8 引入的新的日期和时间 API (java.time
包) 极大地简化了日期和时间的操作,避免了老旧 Date
和 Calendar
类中的一些问题。具体而言:
LocalDate
用于表示没有时区的日期(年月日)。LocalTime
用于表示没有时区的时间(时分秒)。LocalDateTime
用于表示没有时区的日期和时间(年月日时分秒)。
这些类不仅具备不可变性,还提供了更简洁、易用的 API,支持流式操作,并且非常适合多线程环境。
通过理解并使用这些类,你能够更加高效地处理日期和时间操作,同时提高代码的可读性和可维护性。
… …
文末
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
… …
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
版权声明:本文由作者原创,转载请注明出处,谢谢支持!
- 点赞
- 收藏
- 关注作者
评论(0)