Java 8中的18个常用日期处理(收藏)
介绍
Java 8以前的日期处理方式比较麻烦,Java 8引入了新的日期时间API,也称为JSR-310,使对日期和时间的处理更加简便。本文将介绍Java 8中的18个常用日期处理方法。
1. 获取当天的日期
LocalDate today = LocalDate.now();
使用LocalDate.now()
方法获取当天的日期。
2. 获取当前时间
LocalTime time = LocalTime.now();
使用LocalTime.now()
方法获取当前时间。
3. 获取当前日期和时间
LocalDateTime now = LocalDateTime.now();
使用LocalDateTime.now()
方法获取当前日期和时间。
4. 获取某一天的日期
LocalDate date = LocalDate.of(2018, Month.OCTOBER, 11);
使用LocalDate.of()
方法获取某一天的日期。
5. 检查两个日期是否相等
LocalDate date1 = LocalDate.of(2018, Month.OCTOBER, 11);
LocalDate date2 = LocalDate.of(2018, Month.OCTOBER, 11);
if(date1.isEqual(date2)){
System.out.println("两个日期相等");
} else {
System.out.println("两个日期不相等");
}
使用isEqual()
方法检查两个日期是否相等。
6. 检查日期是否是闰年
LocalDate date = LocalDate.of(2018, Month.OCTOBER, 11);
if(date.isLeapYear()){
System.out.println("这一年是闰年");
} else {
System.out.println("这一年不是闰年");
}
使用isLeapYear()
方法检查日期是否是闰年。
7. 获取一周后的日期
LocalDate date = LocalDate.now();
LocalDate nextWeek = date.plus(1, ChronoUnit.WEEKS);
使用plus()
方法获取一周后的日期。
8. 获取一年前的日期
LocalDate date = LocalDate.now();
LocalDate previousYear = date.minus(1, ChronoUnit.YEARS);
使用minus()
方法获取一年前的日期。
9. 获取当前月的第一天
LocalDate date = YearMonth.now().atDay(1);
使用atDay
方法,获取当前月的第一天日期。
10. 获取当前月的最后一天
LocalDate date = YearMonth.now().atEndOfMonth();
使用atEndOfMonth()
方法,获取当前月的最后一天日期。
11. 取得当前时间戳
Instant instant = Instant.now();
使用Instant.now()
方法获取当前时间戳。
12. 解析字符串为日期时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2018-10-11 10:20:30", formatter);
使用DateTimeFormatter.ofPattern()
方法设置日期时间格式,使用parse()
方法解析字符串为日期时间。
13. 创建带有时区偏移量的日期时间
LocalDateTime dateTime = LocalDateTime.now();
ZoneOffset offset = ZoneOffset.of("+01:00");
OffsetDateTime offsetDateTime = OffsetDateTime.of(dateTime, offset);
使用ZoneOffset.of()
方法设置时区偏移量,使用OffsetDateTime.of()
方法创建带有时区偏移量的日期时间。
14. 获取当前年月
YearMonth yearMonth = YearMonth.now();
使用YearMonth.now()
方法获取当前年月。
15. 检查日期是否在另一个日期之前
LocalDate now = LocalDate.now();
LocalDate after = LocalDate.of(2019, Month.DECEMBER, 1);
if(after.isAfter(now)){
System.out.println("日期在当前日期之后");
} else {
System.out.println("日期在当前日期之前");
}
使用isAfter()
方法检查日期是否在另一个日期之后。
16. 获取今天是这个月的第几天
LocalDate date = LocalDate.now();
int dayOfMonth = date.getDayOfMonth();
使用getDayOfMonth()
方法获取今天是这个月的第几天。
17. 获取今天是这一年的第几天
LocalDate date = LocalDate.now();
int dayOfYear = date.getDayOfYear();
使用getDayOfYear()
方法获取今天是这一年的第几天。
18. 计算两个日期之间的天数
LocalDate before = LocalDate.of(2018, Month.OCTOBER, 5);
LocalDate after = LocalDate.of(2018, Month.OCTOBER, 11);
long daysBetween = ChronoUnit.DAYS.between(before, after);
使用ChronoUnit.DAYS.between()
方法计算两个日期之间的天数。
示例
下面是获取某一天的日期和解析字符串为日期时间的两个示例:
获取某一天的日期
LocalDate date = LocalDate.of(2019, Month.JANUARY, 20);
System.out.println(date);
输出:
2019-01-20
解析字符串为日期时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2019-01-20 10:20:30", formatter);
System.out.println(dateTime);
输出:
2019-01-20T10:20:30
结论
Java 8中的新日期时间API为日期时间处理提供了更多的便利性和灵活性。在实际开发中,我们可以使用这些方法对日期时间进行更加方便的处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 8中的18个常用日期处理(收藏) - Python技术站