注意:本文中相关变量与对应的类型关系为
- datexxx -> LocalDate
- timexxx -> LocalTime
- dateTimexxx -> LocalDateTime
// 获取当前日期
LocalDate date1 = LocalDate.now(); // 2020-09-04
// 获取当前时间
LocalTime time1 = LocalTime.now(); // 10:57:10.594
// 获取当前日期时间
LocalDateTime dateTime1 = LocalDateTime.now(); // 2020-09-04T10:57:10.594
// 从 LocalDateTime 获取 LocalDate
LocalDate dateTime1WithDate = dateTime1.toLocalDate(); // 2020-09-04
// LocalDateTime 获取 LocalTime
LocalTime dateTime1WithTime = dateTime1.toLocalTime(); // 10:57:10.594
// 年
int year = dateTime1.getYear(); // 2020
// 月(月的名称,例如:September)
Month month = dateTime1.getMonth(); // September
// 月(月的序号,例如:9)
int monthValue = dateTime1.getMonthValue(); // 9
// 日
int dayOfMonth = dateTime1.getDayOfMonth(); // 4
// 时
int hour = dateTime1.getHour(); // 10
// 分
int minute = dateTime1.getMinute(); // 57
// 秒
int second = dateTime1.getSecond(); // 10
// 2020年9月(SEPTEMBER)4日 10时57分10秒
// LocalDate 和 LocalTime 也可以使用如上方法
// 生成日期
LocalDate date2 = LocalDate.of(2020, 9, 3); // 2020-09-03
// 生成时间
LocalTime time2 = LocalTime.of(22, 30, 59); // 22:30:59
// 生成日期时间(月份格式,形如:9)
LocalDateTime dateTime2WithMonth = LocalDateTime.of(2020, 8, 1, 16, 29, 3); // 2020-08-01T16:29:03
// 生成日期时间(月份格式,形如:APRIL)
LocalDateTime dateTime2WithMonthValue = LocalDateTime.of(2020, Month.APRIL, 6, 19, 23, 2); // 2020-04-06T19:23:02
// 生成日期时间(根据 LocalDate 和 LocalTime)
LocalDateTime dateTimeWithdt = LocalDateTime.of(date2, time2); // 2020-09-03T22:30:59
// 格式化日期
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String dateStr = dateFormatter.format(LocalDate.now()); // 2020/09/04
// 格式化时间
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String timeStr = timeFormatter.format(LocalTime.now()); // 10:57:10
// 格式化日期时间
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String dateTimeStr = dateTimeFormatter.format(LocalDateTime.now()); // 2020/09/04 10:57:10
// 使用默认解析格式(输入要符合格式)
LocalTime time3 = LocalTime.parse("20:30:55"); // 20:30:55
LocalDate date3 = LocalDate.parse("2020-10-03"); // 2020-10-03
LocalDateTime dateTime3 = LocalDateTime.parse("2020-03-04T13:45:55"); // 2020-03-04T13:45:55
// 自定义解析格式
LocalDate date4 = LocalDate.parse("2020/03/04", DateTimeFormatter.ofPattern("yyyy/MM/dd")); // 2020-03-04
LocalTime time4 = LocalTime.parse("20/01/23", DateTimeFormatter.ofPattern("HH/mm/ss")); // 20:01:23
LocalDateTime dateTime4 = LocalDateTime.parse("2020/05/06 23/34/45",
DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss")); // 2020-05-06T23:34:45
LocalDate date5 = date4.withYear(1999).withMonth(9).withDayOfMonth(25); // 1999-09-25
LocalTime time5 = time4.withHour(1).withMinute(2).withSecond(3); // 01:02:03
LocalDateTime dateTime5 = dateTime4.withYear(1998).withMonth(3).withDayOfMonth(31)
.withHour(13).withMinute(10).withSecond(25); // 1998-03-31T13:10:25
// 加
LocalDate date6 = date5.plusYears(1).plusMonths(1).plusDays(1); // 2000-10-26
LocalTime time6 = time5.plusHours(1).plusMinutes(1).plusSeconds(1); // 02:03:04
LocalDateTime dateTime6 = dateTime5.plusYears(1).plusMonths(1).plusDays(1)
.plusHours(1).plusMinutes(1).plusSeconds(1); // 1999-05-01T14:11:26
// 减
LocalDate date7 = date6.minusYears(1).minusMonths(1).minusDays(1); // 1999-09-25
LocalTime time7 = time6.minusHours(1).minusMinutes(1).minusSeconds(1); // 01:02:03
LocalDateTime dateTime7 = dateTime6.minusYears(1).minusMonths(1).minusDays(1).
minusHours(1).minusMinutes(1).minusSeconds(1); // 1998-03-31T13:10:25
/*
* 八、相关功能:查询某一个日期(不含时间)内的数据
* 日期 - > 日期时间
*
* 当用户选择某一天的数据,如:2020/09/04 - 2020/09/05
* 数据库日期格式为"yyyy/MM/dd HH:mm:ss",所以将 日期 转换为 日期时间 时,会变为:2020/09/04 00:00:00 - 2020/09/05 00:00:00
* 导致无法查询截止日期那一天的数据,所以需要对日期进行特殊处理
* 将截至日期转换为日期时间,然后(+1 day)(-1 second)
* */
LocalDate localDate = LocalDate.parse("2020/09/04", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
LocalTime localTime = LocalTime.of(0, 0, 0);
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
LocalDateTime localDateTime1 = localDateTime.plusDays(1).minusSeconds(1);
// 处理完毕,截止日期为:2020-09-04T23:59:59