Jdk1.8新增三大日期常量类,与String类相同都是通过final来修饰,线程安全。
LocalDate:表示日期(年月日)
LocalTime :表示时间(时分秒)
LocalDateTime:表示时间+ 日期 (年月日时分秒),是java8最常用的日期类
LocalDate
常用API
now() 获取默认时区的当前日期对象
now(Clock clock) 从指定时钟获取当前日期对象
now(ZoneId zone) 获取指定时区的当前日期对象
of 根据指定年月日创建LocalDate对象
getYear 获得年份
getMonthValue 获得月份(1-12)
getMonth 获得月份枚举值
getDayOfMonth 获得月份中的第几天(1-31)
getDayOfWeek 获得星期几
getDayOfYear 获得年份中的第几天(1-366)
lengthOfYear 获得当年总天数
lengthOfMonth 获得当月总天数
toEpochDay 与时间纪元(1970年1月1日)相差的天数
plusDays 加天
plusWeeks 加周
plusMonths 加月
plusYears 加年
minusDays 减年
minusWeeks 减周
minusMonths 减月
minusYears 减年
withYear 替换年份
withMonth 替换月份
withDayOfMonth 替换月份中的第几天(1-31)
withDayOfYear 替换年份中的第几天(1-366)
isBefore 是否日期在之前
isAfter 是否日期在之后
isEqual 是否是当前日期
isleapYear 是否是闰年
示例代码
public static void main(String[]args){
LocalDate now1 = LocalDate.now(); // 当前日期
LocalDate now2 = LocalDate.now(ZoneId.of("Asia/Shanghai")); // 当前日期 (指定时区)
LocalDate now3 = LocalDate.now(Clock.systemDefaultZone()); // 当前日期 (指定时钟)
LocalDate localDate = LocalDate.of(2023, 1, 1); // 指定日期 2023-01-01
//获取日期
LocalDate now = LocalDate.now();
int year = now.getYear(); // 获取年份
int month = now.getMonthValue(); // 获取月份(1-12)
Month monthEnum = now.getMonth(); // 获取月份的枚举值
int dayOfMonth = now.getDayOfMonth(); // 获取月份中的第几天(1-31)
int dayOfYear = now.getDayOfYear(); // 获取一年中的第几天(1-366)
DayOfWeek dayOfWeek = now.getDayOfWeek(); // 获取现在是星期几
int dayOfYear = now.getDayOfYear(); // 获取一年中的第几天(1-366)
int lengthOfYear = now.lengthOfYear(); // 获得当年总天数
int lengthOfMonth = now.lengthOfMonth(); // 获得当月总天数
long epochDay = now.toEpochDay(); // 与时间纪元(1970年1月1日)相差的天数
//修改日期
LocalDate now = LocalDate.now();
LocalDate localDate1 = now.plusDays(1); // 给当前时间加一天
LocalDate localDate2 = now.plusDays(1); // 给当前时间加一周
LocalDate localDate3 = now.plusMonths(1); // 给当前时间加一月
LocalDate localDate4 = now.plusYears(1); // 给当前时间加一年
LocalDate localDate5 = now.minusDays(1); // 给当前时间减一天
LocalDate localDate6 = now.minusWeeks(1); // 给当前时间减一周
LocalDate localDate7 = now.minusMonths(1); // 给当前时间减一月
LocalDate localDate8 = now.minusYears(1); // 给当前时间减一年
LocalDate now = LocalDate.now();
LocalDate localDate1 = now.withYear(2020); // 修改日期对象年份为2020
LocalDate localDate2 = now.withMonth(1); // 修改日期对象月份为1
LocalDate localDate3 = now.withDayOfMonth(1); // 修改日期对象的日期(一月中的第几天)
LocalDate localDate4 = now.withDayOfYear(1); // 修改日期对象的日期(一年中的第几天)
//日期比较
LocalDate now = LocalDate.now();
LocalDate localDate = LocalDate.of(2023, 1, 1)
boolean isBefore = localDate.isBefore(now); // localDate是否在当天之前
boolean isAfter = localDate.isAfter(now); // localDate是否在当天之后
boolean isEqual = localDate.isEqual(now); // localDate是否在当天
boolean isLeapYear = localDate.isLeapYear(); // localDate是否是闰年
}
LocalTime
常用API
now() 获取默认时区的当前时间
now(ZoneId zone) 获取指定时区的当前时间
now(Clock clock) 从指定时钟获取当前时间
of 根据指定的时、分、秒获取LocalTime 实例
getHour 获取小时
getMinute 获取分钟
getSecond 获取秒
getNano 获取纳秒
plusHours 增加小时数
plusMinutes 增加分钟数
plusSeconds 增加秒数
plusNanos 增加纳秒数
minusHours 减少小时数
minusMinutes 减少分钟数
minusSeconds 减少秒数
minusNanos 减少纳秒数
withHour 替换小时
withMinute 替换分钟
withSecond 替换秒钟
withNano 替换纳秒
compareTo 时间与另一个时间比较
isAfter 检查时间是否在指定时间之后
isBefore 检查时间是否在指定时间之前
示例代码
public static void main(String[]args){
//获取时间
LocalTime now1 = LocalTime.now(); // 当前时间
LocalTime now2 = LocalTime.now(ZoneId.of("Asia/Shanghai")); // 当前时间 (指定时区)
LocalTime now3 = LocalTime.now(Clock.systemDefaultZone()); // 当前时间 (指定时钟)
LocalTime localTime = LocalTime.of(9, 9, 9); // 指定时间 09:09:09
LocalTime now = LocalTime.now();
int hour = now.getHour(); // 获取小时
int minute = now.getMinute(); // 获取小时
int second = now.getSecond(); // 获取秒
int nano = now.getNano(); // 获取纳秒
//修改日期
LocalTime now = LocalTime.now();
LocalTime localTime1 = now.plusHours(1); // 给当前时间加一小时
LocalTime localTime2 = now.plusMinutes(1); // 给当前时间加一分钟
LocalTime localTime3 = now.plusSeconds(1); // 给当前时间加一秒
LocalTime localTime4 = now.plusNanos(1); // 给当前时间加一纳秒
LocalTime localTime1 = now.minusHours(1); // 给当前时间减一小时
LocalTime localTime2 = now.minusMinutes(1); // 给当前时间减一分钟
LocalTime localTime3 = now.minusSeconds(1); // 给当前时间减一秒
LocalTime localTime4 = now.minusNanos(1); // 给当前时间减一纳秒
LocalTime now = LocalTime.now();
LocalDate localTime1 = now.withHour(1); // 修改时间对象小时为1
LocalDate localTime2 = now.withMinute(1); // 修改时间对象分钟为1
LocalDate localTime3 = now.withSecond(1); // 修改时间对象秒钟为1
LocalDate localTime4 = now.withNano(1); // 修改时间对象纳秒为1
//日期比较
LocalTime now = LocalTime.now();
LocalTime localTime = LocalTime.of(9, 9, 9);
int compare = localTime.compareTo(now); // localTime和当前时间比较--0(相等)正数(大)负数(小)
boolean after = localTime.isAfter(now); // localTime是否在当前时间之后
boolean before = localTime.isBefore(now); // localTime是否在当前时间之前
}
LocalDateTime
常用API
now() 获取默认时区的当前日期时间
now(Clock clock) 从指定时钟获取当前日期时间
now(ZoneId zone) 获取指定时区的当前日期时间
of(LocalDate date, LocalTime time) 根据日期和时间对象获取LocalDateTime 对象
of(int year, Month month, int dayOfMonth, int hour, int minute, int second) 根据指定的年、月、日、时、分、秒获取LocalDateTime 实例
getYear 获取年份
getMonth 使用月份枚举类获取月份
getDayOfMonth 获取日期在该月是第几天
getDayOfWeek 获取日期是星期几
getDayOfYear 获取日期在该年是第几天
getHour 获取小时
getMinute 获取分钟
getSecond 获取秒
getNano 获取纳秒
plusYears 增加年
plusMonths 增加月
plusWeeks 增加周
plusDays 增加天
plusHours 增加小时
plusMinutes 增加分
plusSeconds 增加秒
plusNanos 增加纳秒
minusYears 减少年
minusMonths 减少月
meminusWeeks 减少周
minusDays 减少天
minusHours 减少小时
minusMinutes 减少分
minusSeconds 减少秒
minusNanos 减少纳秒
withYear 替换年份
withMonth 替换月份
withDayOfMonth 替换月份中的第几天(1-31)
withDayOfYear 替换年份中的第几天(1-366)
withHour 替换小时
withMinute 替换分钟
withSecond 替换秒钟
withNano 替换纳秒
isEqual 判断日期时间是否相等
isBefore 检查是否在指定日期时间之前
isAfter 检查是否在指定日期时间之后
示例代码
public static void main(String[]args){
//获取日期
// 当前日期
LocalDateTime now1 = LocalDateTime.now();
//当前日期 (指定时区)
LocalDateTime now2 = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
//当前日期 (指定时钟)
LocalDateTime now3 = LocalDateTime.now(Clock.systemDefaultZone());
//指定日期 2023-01-01 01:01:00
LocalDateTime localDateTime1 = LocalDateTime.of(2023, 1, 1, 1, 1);
//使用LocalDate和LocalTime对象创建LocalDateTime对象
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime2 = LocalDateTime.of(localDate, localTime);
LocalDateTime now = LocalDateTime.now();
int year = now.getYear(); // 获取年份
Month month = now.getMonth(); // 使用月份枚举值
int dayOfMonth = now.getDayOfMonth(); // 获取日期在该月是第几天
DayOfWeek dayOfWeek = now.getDayOfWeek(); // 获取日期是星期几
int dayOfYear = now.getDayOfYear(); // 获取日期在该年是第几天
int hour = now.getHour(); // 获取小时
int minute = now.getMinute(); // 获取分钟
int second = now.getSecond(); // 获取秒钟
int nano = now.getNano(); // 获取纳秒
//修改日期
LocalDateTime now = LocalDateTime.now();
LocalDateTime localDateTime1 = now.plusDays(1); // 给当前时间加一天
LocalDateTime localDateTime2 = now.plusDays(1); // 给当前时间加一周
LocalDateTime localDateTime3 = now.plusMonths(1); // 给当前时间加一月
LocalDateTime localDateTime4 = now.plusYears(1); // 给当前时间加一年
LocalDateTime localDateTime5 = now.plusHours(1); // 给当前时间加一小时
LocalDateTime localDateTime6 = now.plusMinutes(1); // 给当前时间加一分钟
LocalDateTime localDateTime7 = now.plusSeconds(1); // 给当前时间加一秒
LocalDateTime localDateTime8 = now.plusNanos(1); // 给当前时间加一纳秒
LocalDateTime localDateTime9 = now.minusDays(1); // 给当前时间减一天
LocalDateTime localDateTime10 = now.minusWeeks(1); // 给当前时间减一周
LocalDateTime localDateTime11 = now.minusMonths(1); // 给当前时间减一月
LocalDateTime localDateTime12 = now.minusYears(1); // 给当前时间减一年
LocalDateTime localDateTime13 = now.minusHours(1); // 给当前时间减一小时
LocalDateTime localDateTime14 = now.minusMinutes(1); // 给当前时间减一分钟
LocalDateTime localDateTime15 = now.minusSeconds(1); // 给当前时间减一秒
LocalDateTime localDateTime16 = now.minusNanos(1); // 给当前时间减一纳秒
LocalDateTime now = LocalDateTime.now();
LocalDateTime localDate1 = now.withYear(2020); // 修改日期对象年份为2020
LocalDateTime localDate2 = now.withMonth(1); // 修改日期对象月份为1
LocalDateTime localDate3 = now.withDayOfMonth(1); // 修改日期对象的日期(一月中的第几天)
LocalDateTime localDate4 = now.withDayOfYear(1); // 修改日期对象的日期(一年中的第几天)
LocalDateTime localTime1 = now.withHour(1); // 修改时间对象小时为1
LocalDateTime localTime2 = now.withMinute(1); // 修改时间对象分钟为1
LocalDateTime localTime3 = now.withSecond(1); // 修改时间对象秒钟为1
LocalDateTime localTime4 = now.withNano(1); // 修改时间对象纳秒为1
//日期比较
LocalDateTime now = LocalDateTime.now();
LocalDateTime localDateTime = LocalDateTime.of(2023, 1, 1, 1, 1);
boolean isBefore = localDateTime.isBefore(now); // localDateTime是否在当天之前
boolean isAfter = localDateTime.isAfter(now); // localDateTime是否在当天之后
boolean isEqual = localDateTime.isEqual(now); // localDateTime是否在当天
}