Java JDK8中的时间类
# 获取默认时区
ZoneId zoneId = ZoneId.systemDefault();
# 设置时区
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
ZoneId zoneId = ZoneId.getTimeZone("CTT").toZoneId();
LocalDate
LocalTime
LocalDateTime
#获取时间方法:
LocalDate.parse("20191011", DateTimeFormatter.ofPattern("yyyyMMdd"));
LocalDate date = LocalDate.of(2019, 10, 11); // 年 月 日
LocalDate nowDate = LocalDate.now();
.getYear()); // 年
.getMonthValue()); // 月
.getDayOfMonth()); // 日
.getHour()); // 时
.getMinute()); // 分
.getSecond()); // 秒
.getDayOfWeek()); // 星期几
不可变的,所以是线程安全的
# 格式化年月日
LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))
# 格式化时分秒
LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))
LoalcalDate date = LocalDate.parse("20230716",DateTimeFormatter.ofPattern("yyyy=MM-dd"));
LocalTime time = LocalTime.parse("123900",DateTimeFormatter.ofPattern("hh:MM:ss"))
常用工具
LocalDateTime转Date类型
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
Date转LocalDateTime
Date now = date.toInstant()
LocalDateTime localDateTime = now.atZone(ZoneId.systemDefault()).toLocalDateTime()
事件数值的操作:
- plus
开头的方法都是增加日期时间的
。 - minus
开头的方法都是增加日期时间的。
- with
开头的方法都是直接修改到指定值
LocalDateTime now = LocalDateTime.now();
#Plus
localDateTime = now.plusYear(1);
localDateTime = now.plus(1, chronUnit.YEARs);
#Minus
localDateTime = now.minusMonth(1);
localDateTime = now.minus(1, chronUnit.MONTHS);
#With
localDateTime = now.withDay(17);
loclaDateTime. = now.with(ChrononField.DAY,17)
对于日期值进行前后判断
- isBefore():如果调用方法的那个日期比给定的日期要早的话,方法会返回true。
- isAfter():如果调用方法的那个日期比给定的日期晚的话,方法会返回true。
- isEqual():如果调用方法的那个日期比给定的日期相等的话,方法会返回true。
获取日期的开始与结束日期
LocalDateTime date = LocalDateTime.now();
# 获取当月开头
LocalDateTime firstDay = date.with(TemporalAdjusters.firstDayOfMonth());
# 获取当月最后一天
localDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMont());