JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记

JAVA8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁!

LocalDate、LocalTime、LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进行的,有必要搞清楚:
LocalDate : 只含年月日的日期对象
LocalTime :只含时分秒的时间对象
LocalDateTime : 同时含有年月日时分秒的日期对象

获取当前时间

 LocalTime localTime = LocalTime.now();
 LocalDate localDate = LocalDate.now();
 LocalDateTime localDateTime = LocalDateTime.now();
 System.out.println("当前时间:" + localTime);
 System.out.println("当前日期:" + localDate);
 System.out.println("当前时间日期:" + localDateTime);

运行结果:
在这里插入图片描述
格式化日期

//格式化日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String now = localDateTime.format(formatter);
System.out.println("格式化后当前时间日期:" + now);

运行结果:
在这里插入图片描述
解析时间

//解析时间
LocalDateTime localDateTime = LocalDateTime.parse("2020-08-08 08:08:08", formatter);
System.out.println("解析后时间:" + localDateTime);

运行结果:
在这里插入图片描述
除了基本的格式化,解析时间之外,LocalDateTime还提供了对时间的加减操作

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间日期:" + localDateTime.format(formatter));
//增加一个月时间
localDateTime = localDateTime.plusMonths(1);
System.out.println("增加一个月时间后时间:" + localDateTime.format(formatter));
//增加2周时间
localDateTime = localDateTime.plusWeeks(2);
System.out.println("增加2周时间后时间:" + localDateTime.format(formatter));
//减少两天时间
localDateTime = localDateTime.plusDays(-2);
System.out.println("减少2天时间后时间:" + localDateTime.format(formatter));

运行结果:
在这里插入图片描述
除了使用plusMonths等方法外,还可以使用plus(long amountToAdd, TemporalUnit unit)方法

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
 System.out.println("当前时间日期:" + localDateTime.format(formatter));
 //增加一个月时间
 localDateTime = localDateTime.plus(1, ChronoUnit.MONTHS);
 System.out.println("增加一个月时间后时间:" + localDateTime.format(formatter));
 //增加2周时间
 localDateTime = localDateTime.plus(2, ChronoUnit.WEEKS);
 System.out.println("增加2周时间后时间:" + localDateTime.format(formatter));
 //减少两天时间
 localDateTime = localDateTime.plus(-2, ChronoUnit.DAYS);
 System.out.println("减少2天时间后时间:" + localDateTime.format(formatter));

运行结果:
在这里插入图片描述

JAVA8还提供了计算时间间隔,日期间隔的类

Duration:用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔

 LocalTime localTime1 = LocalTime.now();
 LocalTime localTime2 = LocalTime.of(18, 36, 33);
 System.out.println("时间1:" + localTime1);
 System.out.println("时间2:" + localTime2);
 Duration duration = Duration.between(localTime1, localTime2);
 System.out.println("两个时间之间相隔" + duration.toHours() + "小时");
 System.out.println("两个时间之间相隔" + duration.toMinutes() + "分钟");
 System.out.println("两个时间之间相隔" + duration.getSeconds() + "秒");

运行结果:
在这里插入图片描述

 LocalDate localDate1 = LocalDate.of(2021, 2, 20);
        LocalDate localDate2 = LocalDate.of(2022, 5, 12);
        Period period = Period.between(localDate1, localDate2);
        System.out.println("日期1:" + localDate1);
        System.out.println("日期2:" + localDate2);
        System.out.println("两个日期之间相隔" + period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "日");

运行结果:
在这里插入图片描述
另外还提供了是否是闰年的方法

System.out.println("是否为闰年:" + localDate2.isLeapYear());

运行结果:
在这里插入图片描述
withDayOfYear(int dayOfYear)可以将日期设置为今年的多少天

LocalDateTime localDateTime3 = LocalDateTime.now();
System.out.println("当前时间日期:" + localDateTime3.format(formatter));
//将当前日期设置为今年的第50天
localDateTime3 = localDateTime3.withDayOfYear(50);
System.out.println("设置后日期:" + localDateTime3.format(formatter));

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值