18个Java8日期处理的实践,太有用了!("Java 8日期处理实用技巧:18个高效实践不容错过!")
原创
一、概述
Java 8带来了许多新的特性,其中日期和时间处理方面的改进尤为引人注目。本文将介绍18个实用的Java 8日期处理技巧,帮助您更高效地处理日期和时间问题。
二、Java 8日期处理常用类
Java 8引入了新的日期时间API,关键包括以下类:
- LocalDate:描述没有时区的日期
- LocalTime:描述没有时区的时间
- LocalDateTime:描述没有时区的日期和时间
- Instant:描述时间戳
- ZonedDateTime:描述带时区的日期和时间
- DateTimeFormatter:日期时间格式化类
三、18个Java 8日期处理实践
1. 获取当前日期
LocalDate currentDate = LocalDate.now();
2. 获取当前时间
LocalTime currentTime = LocalTime.now();
3. 获取当前日期和时间
LocalDateTime currentDateTime = LocalDateTime.now();
4. 获取当前时间戳
Instant currentInstant = Instant.now();
5. 日期加减
LocalDate date = LocalDate.now();
LocalDate datePlusOne = date.plusDays(1);
LocalDate dateMinusOne = date.minusDays(1);
6. 时间加减
LocalTime time = LocalTime.now();
LocalTime timePlusOneHour = time.plusHours(1);
LocalTime timeMinusOneHour = time.minusHours(1);
7. 日期时间加减
LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime dateTimePlusOneDay = dateTime.plusDays(1);
LocalDateTime dateTimeMinusOneDay = dateTime.minusDays(1);
8. 格式化日期时间
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
9. 解析日期时间
String strDateTime = "2022-12-01 10:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(strDateTime, formatter);
10. 获取月份的第一天和最后一天
LocalDate date = LocalDate.now();
LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
11. 判断闰年
LocalDate date = LocalDate.of(2020, 2, 1);
boolean isLeapYear = date.isLeapYear();
12. 获取某个日期的星期几
LocalDate date = LocalDate.of(2022, 12, 1);
DayOfWeek dayOfWeek = date.getDayOfWeek();
13. 比较日期大小
LocalDate date1 = LocalDate.of(2022, 12, 1);
LocalDate date2 = LocalDate.of(2022, 12, 2);
boolean isBefore = date1.isBefore(date2);
boolean isAfter = date1.isAfter(date2);
14. 计算两个日期之间的天数差
LocalDate startDate = LocalDate.of(2022, 12, 1);
LocalDate endDate = LocalDate.of(2022, 12, 10);
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
15. 计算两个时间之间的分钟差
LocalTime startTime = LocalTime.of(10, 0);
LocalTime endTime = LocalTime.of(12, 30);
long minutesBetween = ChronoUnit.MINUTES.between(startTime, endTime);
16. 获取两个日期之间的所有日期
LocalDate startDate = LocalDate.of(2022, 12, 1);
LocalDate endDate = LocalDate.of(2022, 12, 10);
List<LocalDate> datesBetween = Stream.iterate(startDate, date -> date.plusDays(1))
.limit(ChronoUnit.DAYS.between(startDate, endDate))
.collect(Collectors.toList());
17. 获取两个时间之间的所有时间
LocalTime startTime = LocalTime.of(10, 0);
LocalTime endTime = LocalTime.of(12, 0);
List<LocalTime> timesBetween = Stream.iterate(startTime, time -> time.plusMinutes(30))
.limit(ChronoUnit.MINUTES.between(startTime, endTime))
.collect(Collectors.toList());
18. 获取当前时间所在季度
LocalDate date = LocalDate.now();
int quarter = (date.getMonthValue() - 1) / 3 + 1;
四、总结
本文介绍了18个实用的Java 8日期处理技巧,包括获取当前日期、时间、日期时间、时间戳,日期时间的加减,格式化与解析,获取月份的第一天和最后一天,判断闰年,获取星期几,比较日期大小,计算日期时间差,获取两个日期或时间之间的所有日期或时间等。掌握这些技巧,可以大大尽或许降低损耗Java日期时间处理的快速。