LocalDate、LocalTime、LocalDateTime相关用法以及简介

jdk1.8新增的LocalDate、LocalTime、LocalDateTime的相关操作(告别Date)


一、LocalDate对象用法

1、LocalDate的创建方式

(初始化、设置指定日期、装换…)

		// 1、初始化
        LocalDate now = LocalDate.now(); // 2022-11-23
        // 2、设置指定的年月日,参数类型(int)
        LocalDate of = LocalDate.of(2022, 10, 11); // 2022-10-11
        // 3、获取指定年份的第几天, one:年份,two:第几天
        LocalDate localDate = LocalDate.ofYearDay(2022, 12); // 2022-01-12
        // 4、将指定的字符串转换成LocalDate类型
        LocalDate parse = LocalDate.parse("2022-10-10"); // 2022-10-10
        // 5、从指定格式的文本中字符串中获取LocalDate实例,最后格式为(yyyy-MM-dd)
        LocalDate parse1 = LocalDate.parse("09-10-2022", DateTimeFormatter.ofPattern("dd-MM-yyyy")); // 2022-10-09

2、增加日期

(通过指定单位增加指定时间)

 		// TODO: 增加日期(version 1.0)
        // 添加指定天数
        LocalDate localDate1 = LocalDate.now().plusDays(10); // 2022-12-03
        // 添加指定月数
        LocalDate localDate2 = LocalDate.now().plusMonths(2); // 2023-01-23
        // 添加指定年份
        LocalDate localDate3 = LocalDate.now().plusYears(2); // 2024-11-23
        // 添加指定周数
        LocalDate localDate4 = LocalDate.now().plusWeeks(1); // 2022-11-30

        // TODO: 增加日期(version 2.0)
        // 1、添加指定天数
        LocalDate plus = LocalDate.now().plus(10, ChronoUnit.DAYS); // 2022-12-03
        // 2、添加指定月数
        LocalDate plus1 = LocalDate.now().plus(2, ChronoUnit.MONTHS); // 2023-01-23
        // 3、添加指定年份
        LocalDate plus2 = LocalDate.now().plus(2, ChronoUnit.YEARS); // 2024-11-23
        // 4、添加指定周数
        LocalDate plus6 = LocalDate.now().plus(1, ChronoUnit.WEEKS); // 2022-11-30

        // TODO:增加日期(version 3.0)
        // 添加指定天数
        LocalDate plus3 = LocalDate.now().plus(Period.ofDays(10)); // 2022-12-03
        // 添加指定月数
        LocalDate plus4 = LocalDate.now().plus(Period.ofMonths(2)); // 2023-01-23
        // 添加指定年份
        LocalDate plus5 = LocalDate.now().plus(Period.ofYears(2)); // 2024-11-23
        // 添加指定周数
        LocalDate plus7 = LocalDate.now().plus(Period.ofWeeks(1)); // 2022-11-30

3、减少日期

(通过指定单位减少指定时间)

        // TODO: 减少日期(version 1.0)
        // 减少指定天数
        LocalDate localDate5 = LocalDate.now().minusDays(10); // 2022-11-13
        // 减少指定月份
        LocalDate localDate6 = LocalDate.now().minusMonths(2); // 2022-09-23
        // 减少指定年份
        LocalDate localDate7 = LocalDate.now().minusYears(2); // 2020-11-23
        // 减少指定周数
        LocalDate localDate8 = LocalDate.now().minusWeeks(1); // 2022-11-16

        // TODO: 减少日期(version 2.0)
        // 减少指定天数
        LocalDate minus = LocalDate.now().minus(Period.ofDays(10)); // 2022-11-13
        // 减少指定月份
        LocalDate minus1 = LocalDate.now().minus(Period.ofMonths(2)); // 2022-09-23
        // 减少指定年份
        LocalDate minus2 = LocalDate.now().minus(Period.ofYears(2)); // 2020-11-23
        // 减少指定周数
        LocalDate minus3 = LocalDate.now().minus(Period.ofWeeks(1)); // 2022-11-16

        // TODO: 减少日期(version 3.0)
        // 减少指定天数
        LocalDate minus4 = LocalDate.now().minus(10, ChronoUnit.DAYS); // 2022-11-13
        // 减少指定月份
        LocalDate minus5 = LocalDate.now().minus(2, ChronoUnit.MONTHS); // 2022-09-23
        // 减少指定年份
        LocalDate minus6 = LocalDate.now().minus(2, ChronoUnit.YEARS); // 2020-11-23
        // 减少指定周数
        LocalDate minus7 = LocalDate.now().minus(1, ChronoUnit.WEEKS); // 2022-11-16

4、调整日期

(也就是为日期通过指定单位设置指定值)

        // TODO: 调整日期(version 1.0)
        // 调整年份
        LocalDate localDate9 = LocalDate.now().withYear(2000); // 2000-11-23
        // 调整月份
        LocalDate localDate10 = LocalDate.now().withMonth(1); // 2022-01-23
        // 按年为单位调整日期
        LocalDate localDate11 = LocalDate.now().withDayOfYear(10); // 2022-01-10
        // 按月为单位调整日期
        LocalDate localDate12 = LocalDate.now().withDayOfMonth(10); // 2022-11-10

        // TODO:调整日期(version 2.0)
        // 调整年份
        LocalDate with = LocalDate.now().with(ChronoField.YEAR, 2000); // 2000-11-23
        // 调整月份
        LocalDate with1 = LocalDate.now().with(ChronoField.MONTH_OF_YEAR, 1); // 2022-01-23
        // 按年为单位调整日期
        LocalDate with2 = LocalDate.now().with(ChronoField.DAY_OF_YEAR, 10); // 2022-01-10
        // 按月为单位调整日期
        LocalDate with3 = LocalDate.now().with(ChronoField.DAY_OF_MONTH, 10); // 2022-11-10

        // TODO: 调整日期(version 3.0)
        // 调整年份
        LocalDate with5 = LocalDate.now().with(Year.of(2000)); // 2000-11-23
        // 调整月份
        LocalDate with4 = LocalDate.now().with(Month.JANUARY); // 2022-01-23
        // 按照星期进行调整(当前日期所在周)
        LocalDate with6 = LocalDate.now().with(DayOfWeek.SUNDAY); // 2022-11-25

5、获取日期信息

(获取年月日等信息)

		// 获取系统时间所在年
        int year = LocalDate.now().getYear(); // 2022
        // 获取系统时间所在月
        Month month = LocalDate.now().getMonth(); // NOVEMBER
        // 获取系统时间所在月
        int monthValue = LocalDate.now().getMonthValue(); // 11
        // 获取系统时间所在月的日期
        int dayOfMonth = LocalDate.now().getDayOfMonth(); // 23
        // 获取系统时间的天数
        int dayOfYear = LocalDate.now().getDayOfYear(); // 327

6、日期格式转换

		// TODO: 日期格式转换
        String format = LocalDate.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy")); // 23-11-2022

7、给当前LocalDate对象设置指定时间

		// TODO: 与时间进行结合
        LocalDateTime localDateTime = LocalDate.now().atTime(20, 18, 10); // 2022-11-23T20:18:10

8、日期比较

1、isBefore(LocalDate param) 判断对象日期是否在参数日期之前
2、isAfter(LocalDate param) 判断对象日期是否在参数日期之后
3、equals(LocalDate param) 判断两个日期对象是否相等

		LocalDate now1 = LocalDate.now(); // 2022-11-23
        LocalDate parse2 = LocalDate.parse("2000-10-10");
        LocalDate parse3 = LocalDate.parse("2022-11-23");

        boolean before = now1.isBefore(parse2); // false
        boolean after = now1.isAfter(parse2); // true
        boolean equals = now1.equals(parse3); // true

9、检查闰年

	boolean leapYear = LocalDate.now().isLeapYear(); // false

10、获取今年的天数和本月的天数

		int i = LocalDate.now().lengthOfMonth(); // 30
        int i1 = LocalDate.now().lengthOfYear(); // 365

11、获取日期差

        LocalDate now2 = LocalDate.now(); // 2022-11-23
        LocalDate parse4 = LocalDate.parse("2022-11-20");
        Period until = now2.until(parse4) // Period对象中包含年与日 

二、LocalTime对象用法(需要方法与LocalDate对象方法相同)

1、LocalTime的创建方法

		// 初始化
        LocalTime now = LocalTime.now(); // 21:16:43.181
        // 通过of方法进行创建
        LocalTime of = LocalTime.of(0, 0); // 00:00
        LocalTime of1 = LocalTime.of(1, 0, 0); // 01:00
        LocalTime of3 = LocalTime.of(18, 10, 10); // 18:10:10
        LocalTime of2 = LocalTime.of(2, 0, 0, 0); // 02:00
        LocalTime of4 = LocalTime.of(20, 20, 10, 100); // 20:20:10.000000100
        // 通过 毫秒数 进行创建
        LocalTime localTime = LocalTime.ofSecondOfDay(24 * 60 * 60 - 1); // 23:59:59
        // 通过纳秒数进行创建
        LocalTime localTime1 = LocalTime.ofNanoOfDay(24L * 60 * 60 * 1000000000 - 1); // 23:59:59.999999999
        // 通过字符串进行转换
        LocalTime parse = LocalTime.parse("20:00:00"); // 20:00

2、时间比较

		// TODO:当前时间21:40
		LocalTime of5 = LocalTime.of(20, 10, 10);
        boolean after = LocalTime.now().isBefore(of5); // false
        boolean after1 = LocalTime.now().isAfter(of5); // true
        boolean equals = LocalTime.now().equals(of5); // false

3、时间计算(加、减)

		// 以小时为单位进行计算
        LocalTime localTime2 = LocalTime.now().plusHours(3); // 00:49:43.736
        // 以分钟为单位进行计算
        LocalTime localTime3 = LocalTime.now().plusMinutes(30); // 22:19:43.736
        // 以秒为单位进行计算
        LocalTime localTime4 = LocalTime.now().plusSeconds(100); // 21:51:23.736
        // 以纳秒单位进行计算
        LocalTime localTime5 = LocalTime.now().plusNanos(10000000000000L); // 00:37:03.503
        // 通过指定字段进行计算
        LocalTime plus1 = LocalTime.now().plus(3, ChronoUnit.HOURS); // 00:49:43.736

		// TODO:减法运算(和加法运算的方法差不多,将plus换为minus即可)
		// 以小时为单位进行计算
		LocalTime localTime10 = LocalTime.now().minusHours(3);
		// 以分钟为单位进行计算
        LocalTime localTime11 = LocalTime.now().minusMinutes(10);
		// 以秒为单位进行计算
        LocalTime localTime12 = LocalTime.now().minusSeconds(100);

4、计算时间间隔

 	LocalTime test = LocalTime.parse("20:10:10"); // 测试时间
        // 1、通过Duration对象获取差值
        Duration between = Duration.between(LocalTime.now(), test); // 通过Duration对象获取相差的时、分、秒
        long l = between.toHours(); // -2
        long l1 = between.toMinutes(); // -125
        // 2、通过ChronoUnit对象获取差值
        long between1 = ChronoUnit.HOURS.between(test, LocalTime.now()); // 2
        long between2 = ChronoUnit.MINUTES.between(test, LocalTime.now()); // 125
        // 3、通过LocalTime对象获取差值
        int i2 = LocalTime.now().toSecondOfDay() - test.toSecondOfDay(); // 7541

5、通过特定格式进行时间转换

		String format = LocalTime.now().format(DateTimeFormatter.ofPattern("mm:ss")); // 分:秒 20:19

6、修改时间

		LocalTime localTime6 = LocalTime.now().withHour(10); // 10:20:49.860
        LocalTime localTime7 = LocalTime.now().withMinute(0); // 22:00:51.277
        LocalTime localTime8 = LocalTime.now().withSecond(0); // 22:20:00.975
        LocalTime localTime9 = LocalTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0); // 00:00
        LocalTime with = LocalTime.now().with(ChronoField.HOUR_OF_DAY, 20); // 20:24:51.351

注意事项:LocalTime对象有时候会将秒数进行省略

三、LocalDateTime对象用法(相关方法与上述一致)

1、LocalDateTime的创建方法

		 // 获取系统时间
        LocalDateTime now = LocalDateTime.now(); // 2022-11-24T22:47:52.377
        // 通过of方法进行创建
        LocalDate localDate = LocalDate.now(); // 2022-11-24
        LocalTime localTime = LocalTime.now(); // 22:47:52.377
        // 通过LocalDate对象和LocalTime进行拼接
        LocalDateTime of = LocalDateTime.of(localDate, localTime); // 2022-11-24T22:47:52.377
        // 单个单位进行赋值
        LocalDateTime of1 = LocalDateTime.of(2000, 1, 1, 0, 0); // 2000-01-01T00:00
        // 通过字符串对象进行转换(注:日期和时间之间必须有分隔符”T“)
        LocalDateTime parse = LocalDateTime.parse("2022-10-10T20:20:10"); // 2022-10-10T20:20:10
        // 获取LocalDate对象和LocalTime对象
        LocalDate localDate1 = parse.toLocalDate(); // 2022-10-10
        LocalTime localTime1 = parse.toLocalTime(); // 20:20:10

2、进行格式转换

		String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 2022-11-24 22:54:24

3、日期时间的运算

		LocalDateTime now1 = LocalDateTime.now(); // 2022-11-24T23:00:03.823
        // 以年为单位进行计算
        LocalDateTime localDateTime = now1.plusYears(20); // 2042-11-24T23:00:03.823
        // 以月为单位进行计算
        LocalDateTime localDateTime1 = now1.plusMonths(10); // 2023-09-24T23:00:03.823
        // 其余用法和上述一致

4、修改时间

 		// 通过with方法进行修改
        LocalDateTime localDateTime2 = LocalDateTime.now().withYear(2000).withMonth(10); // 2000-10-01T23:03:58.885
        // 本月第一天
        LocalDateTime time = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth()); // 2022-11-01T23:11:08.108
        // 本月最后一天
        LocalDateTime with = LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()); // 2022-11-30T23:07:34.711
        // 本月第一个周一
        LocalDateTime with1 = LocalDateTime.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2022-11-07T23:11:08.108

5、日期判断

 		LocalDateTime now2 = LocalDateTime.now(); // 2022-11-24T23:15:56.740
        LocalDateTime of2 = LocalDateTime.of(2020, 10, 1, 20, 20); // 2020-10-01T20:20

        boolean before = now2.isBefore(of2); // false
        boolean after = now2.isAfter(of2); // true
        boolean equals = now2.equals(of2); // false

6、日期差值计算

		// 通过Duration对象进行计算
        LocalDateTime now3 = LocalDateTime.now();
        LocalDateTime of3 = LocalDateTime.of(2020, 6, 1, 20, 20);
        Duration between = Duration.between(now3, of3);
        long l = between.toDays(); // -906
        long l1 = between.toHours(); // -21746
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiJiangTao_DEV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值