LocalDateTime、LocalDate、LocalTime相关使用记录(未完)
LocalDateTime
介绍
JDK1.8除了新增了lambda表达式、stream流之外,它还新增了全新的日期时间API。在JDK1.8之前,Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。因此推出了java.time包,该包下的所有类都是不可变类型而且线程安全。
关键类
- Instant:瞬时时间。
- LocalDate:本地日期,不包含具体时间, 格式 yyyy-MM-dd。
- LocalTime:本地时间,不包含日期. 格式 yyyy-MM-dd HH:mm:ss.SSS 。
- LocalDateTime:组合了日期和时间,但不包含时差和时区信息。
- ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。
1.当前时间
LocalDateTime now = LocalDateTime.now();
2.datetime字符串转localDateTime
LocalDateTime dateTime =LocalDateTime.parse("2022-06-30 10:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
3.date字符串转localDate
LocalDate localDate1=LocalDate.parse("2022-06-30", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate localDate2=LocalDate.parse("2022-06-18", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
4.time字符串转localTime
LocalTime Time=LocalTime.parse("18:00", DateTimeFormatter.ofPattern("HH:mm"));
LocalTime Time2=LocalTime.parse("18:00:30", DateTimeFormatter.ofPattern("HH:mm:ss"));
5.localDate 拼 localTime 变成localDateTime
LocalDateTime localDateTime = localDate2.atTime(Time2);
6.获取星期 THURSDAY
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
7.dayOfWeek.getValue() 获取数字 1234567
int value = dayOfWeek.getValue();
8.两个localDate之间相差多少 正、负、0
Period period = Period.between(localDate2, localDate1);
9.两个日期之间相差多少天, DAYS可换
long between = ChronoUnit.DAYS.between(localDate2, localDate1);
10.两个localDateTime之前相差多少 正、负、0
Duration duration = Duration.between(localDateTime, dateTime);
11.两个时间比较,2022-06-30.isAfter 2022-07-01 false 反之 true
boolean after = localDateTime.isAfter(dateTime);
12.两个时间比较,2022-06-30.isBefore 2022-07-01 true 反之 false
boolean before = localDateTime.isBefore(dateTime);
13.两个时间比较,2022-06-30.isEqual 2022-07-01 false 相等 true
boolean equal = localDateTime.isEqual(dateTime);
14.Date 和 LocalDateTime 互相转换
//localDateTime 转 date
Date date = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
//date 转 localDateTime
LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
15.LocalDateTime时间减法
//localDateTime时间减法操作, ,minus-后面接时分秒周月年等
LocalDateTime now = LocalDateTime.now();
now.minusXXX()
16.LocalDateTime时间加法
//localDateTime时间加法操作, ,plus-后面接时分秒周月年等
LocalDateTime now = LocalDateTime.now();
now.plusXXX()