jdk8时间类
记录jdk相关的时间类的使用方式
类
相关的类是在java.time
这个包下面,这个包是线程安全的
LocalDateTime
有点类似Calendar
,不带时区的日期时间。
Instant
存在时区的问题,默认使用的是UTC的时间。时间可以精确到纳秒级别
有点类似java.util.Date
实例
获取默认的时间
1 2 3
| import java.time.LocalDateTime;
LocalDateTime now = LocalDateTime.now();
|
字符串跟时间的相互转换
1 2 3 4 5 6 7 8 9
| import java.time.format.DateTimeFormatter; import java.time.LocalDateTime;
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime startTime = LocalDateTime.parse("2022-03-25 14:00:00", df);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timeStr = df.format(LocalDateTime.now());
|
毫秒和时间相互转换
1 2 3 4
| long mill = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
LocalDateTime.ofInstant(Instant.ofEpochMilli(mill), ZoneId.systemDefault());
|
加减指定时间单位的数据
通过LocalDateTime
我们可以很方便的加减天数或月数
1 2 3 4 5 6
| LocalDateTime now = LocalDateTime.now();
LocalDateTime addOneDay = now.plusDays(1);
LocalDateTime addOneMonths = now.plus(1, ChronoUnit.MONTHS);
|
周相关的操作
1 2 3 4 5 6 7 8 9
| LocalDateTime now = LocalDateTime.now();
LocalDateTime monday = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDateTime nextMonday = now.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
LocalDateTime firstMondayInMonth = now.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
LocalDateTime lastMondayInMonth = now.with(TemporalAdjusters.lastInMonth(DayOfWeek.MONDAY));
|