LocalDate、LocalTime、LocalDateTime使用与区别

前言

LocalDate、LocalTime、LocalDateTime这三个类是java8新提供的时间操作类

  • LocalDate: 主管yyyy-MM-dd这种形式,也就是只管:年-月-日
  • LocalTime: 主管HH:mm:ss这种形式,也就是只管:时:分:秒
  • LocalDateTime: yyyy-MM-dd HH:mm:ss 这种形式,也就是只管: 年-月-日 时:分:秒

案例

获取现在的时间对象:
static void testNow() {
    System.out.println(LocalDate.now());
    System.out.println(LocalTime.now());
    System.out.println(LocalDateTime.now());
}

在这里插入图片描述

使用of来具体定制时间
static void testOf() {
   System.out.println(LocalDate.of(2015, 12, 20));
    System.out.println(LocalTime.of(15, 36, 48));
    System.out.println(LocalDateTime.of(2013, 9, 21, 5, 58, 24));
}

在这里插入图片描述

各种条件的定位时间

凡是LocalDate各种操作之后,他都返回一个新的LocalDate对象,所以,你要接着这个新对象啊,你要是不用对象接着,那么就会看到不起作用,这样子好链式编程

static void testWith() {
   LocalDate localDate = LocalDate.of(2022, 10, 27);
    // 获取本月的第一天
    System.out.println("本月第一天:" + localDate.with(TemporalAdjusters.firstDayOfMonth()));
    // 获取本月的最后一天
    System.out.println("本月最后一天:" + localDate.with(TemporalAdjusters.lastDayOfMonth()));
    // 本年第一天
    System.out.println("本年第一天: " + localDate.with(TemporalAdjusters.firstDayOfYear()));
    // 本年最后一天
    System.out.println("本年最后一天: " + localDate.with(TemporalAdjusters.lastDayOfYear()));
    // 下一个周几的操作
    System.out.println("上周四: " + localDate.with(TemporalAdjusters.previous(DayOfWeek.THURSDAY)));
    System.out.println("下周四: " + localDate.with(TemporalAdjusters.next(DayOfWeek.THURSDAY)));
    // 本月第二周的周五
    System.out.println("本月第二周的周五: " + localDate.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY)));
    // 下一个月的第一天
    System.out.println("下一个月的第一天: " + localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
    // 加一天
    System.out.println("加一天: " + localDate.plusDays(1));
    // 加一周
    System.out.println("加一周: " + localDate.plusWeeks(1));
    // 加一个月
    System.out.println("加一个月: " + localDate.plusMonths(1));
}

在这里插入图片描述

with()方法:返回此日期的调整副本
TemporalAdjuster: 时间调节器,将一个时间调节成另外一个时间

同理,LocalTime和LocalDateTime也可以按照上面的方法来加减小时,分钟,秒等操作

时间的比较

这个之前比较时间都是getTime然后比较一下就行,现在LocalDate、LocalTime、LocalDateTime提供了isBefore、isAfter方法

static void testCompare() {
    LocalDate first = LocalDate.now();
    LocalDate second = LocalDate.of(2015, 12, 25);
    System.out.println(first.isBefore(second));
    System.out.println(first.isAfter(second));
}

在这里插入图片描述

Date 和 LocalDateTime相互转换
public static void main(String[] args) {
    System.out.println(dateToLocalDateTime(new Date()));
    System.out.println(localDateTimeToDate(LocalDateTime.now()));
}

//java.util.Date类型转LocalDateTime
public static LocalDateTime dateToLocalDateTime(Date date) {
    Instant instant = date.toInstant();
    ZoneId zoneId = ZoneId.systemDefault();
    return instant.atZone(zoneId).toLocalDateTime();
}

//java.time.LocalDateTime转java.util.Date
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
    ZoneId zoneId = ZoneId.systemDefault();
    ZonedDateTime zdt = localDateTime.atZone(zoneId);
    return Date.from(zdt.toInstant());
}

在这里插入图片描述

有了LocalDateTime,你就可以操作获取LocalDate、LocalTime了,当然也就有转Date<–>LocalDate Date<–>LocalTime的操作

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值