自学笔记(杂二) -- LocalDateTime Java时间API

本文详细介绍了Java中的LocalDateTime,LocalTime,LocalDate类的使用,包括时间格式化、转换、获取日期时间信息、创建时间日期对象、比较以及进行时间加减运算的方法。还涉及到了时间戳和不同时区的处理。
摘要由CSDN通过智能技术生成

LocalDateTime \ LocalTime \ LocalDate

整理整理API以后直接来翻,毕竟人老了,记性不够!哈哈!!

spring转换时间工具类

		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyMMdd");
        //yyyy代表年(yy代表后两位) MM 代表月份(千万不能用mm)dd 代表天
        LocalDate localDate = LocalDate.now(); //当前日期
        String localDateFormat = localDate.format(dateTimeFormatter);
        System.out.println(localDateFormat); //value : 230614

        dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm:ss");
        // hh 代表小时 mm 代表分(千万不能用MM) ss 代表秒
        LocalTime localTime = LocalTime.now(); //当前时间
        String localTimeFormat = localTime.format(dateTimeFormatter);
        System.out.println(localTimeFormat); //value : 05:44:10

        dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss");
        //这里的 mm、MM 可以随便用,只要位置对 但是推荐大小写和前面两种保持一致 hh、HH 是代表十二小时制还是 二十四小时制
        LocalDateTime localDateTime = LocalDateTime.now(); //当前日期时间
        String localDateTimeFormat = localDateTime.format(dateTimeFormatter);
        System.out.println(localDateTimeFormat); //value : 20230614 05:44:10

        //最大值最小值 -- 感觉没啥用
        LocalDate min = LocalDate.MIN;
        LocalTime min1 = LocalTime.MIN;
        LocalDateTime min2 = LocalDateTime.MIN;
        System.out.println(min); //value : -999999999-01-01
        System.out.println(min1); //value : 00:00
        System.out.println(min2); //value : -999999999-01-01T00:00

        LocalDate max = LocalDate.MAX;
        LocalTime max1 = LocalTime.MAX;
        LocalDateTime max2 = LocalDateTime.MAX;
        System.out.println(max); //value : -999999999-01-01
        System.out.println(max1); //value : 00:00
        System.out.println(max2); //value : -999999999-01-01T00:00

具体的api使用:

        // 以下均以 LocalDateTime 举例
        dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//这里的 mm、MM 可以随便用,只要位置对 但是推荐大小写和前面两种保持一致
        localDateTime = LocalDateTime.parse("2022-06-13 18:06:39", dateTimeFormatter);// string 转 localDateTime
        localDateTimeFormat = localDateTime.format(dateTimeFormatter);
        System.out.println("localDateTimeFormat:" + localDateTimeFormat); //value : 2022-06-13 18:06:39

获取对应的时间日期以及当前天数

        // 获取
        LocalDate toLocalDate = localDateTime.toLocalDate();// 获取 LocalDate
        System.out.println(toLocalDate); //value : 2022-06-13

        LocalTime toLocalTime = localDateTime.toLocalTime();// 获取 LocalTime
        System.out.println(toLocalTime); //value : 18:06:39

        DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
        System.out.println("dayOfWeek:" + dayOfWeek);// 星期几 dayOfWeek:MONDAY
        int dayOfMonth = localDateTime.getDayOfMonth();
        System.out.println("dayOfMonth:" + dayOfMonth);// 当月第几天 dayOfMonth:13
        int dayOfYear = localDateTime.getDayOfYear();
        System.out.println("dayOfYear:" + dayOfYear);//当年第几天 dayOfYear:164
        int hour = localDateTime.getHour();
        System.out.println("hour:" + hour);//获取小时 hour:18
        int minute = localDateTime.getMinute();
        System.out.println("minute:" + minute);//获取分 minute:6
        int second = localDateTime.getSecond();
        System.out.println("second:" + second);//获取秒 second:39
        int year = localDateTime.getYear();
        System.out.println("year:" + year);//获取年 year:2022
        int monthValue = localDateTime.getMonthValue();
        System.out.println("monthValue:" + monthValue);//获取月 monthValue:6
        int nano = localDateTime.getNano();
        System.out.println("nano:" + nano);//获取纳秒 nano:0 由于数据是2022-06-13 18:06:39 所以为零 == 2022-06-13 18:06:39.0 下方是纳秒的转换
        /*
        dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.n");//这里的 mm、MM 可以随便用,只要位置对 但是推荐大小写和前面两种保持一致
        localDateTime = LocalDateTime.parse("2022-06-13 18:06:39.123456789", dateTimeFormatter);// string 转 localDateTime
         */

        Month month = localDateTime.getMonth();//获取月份
        System.out.println("month:" + month);//month:JUNE
        Chronology chronology = localDateTime.getChronology(); //获取年代
        System.out.println("chronology:" + chronology);//chronology:ISO 说实话没文化,ISO 是什么? 有谁知道!

直接创建时间日期对象

        //创建时间
        LocalDateTime of1 = LocalDateTime.of(LocalDate.of(2021, 11, 15), LocalTime.of(20, 45, 35));
        System.out.println(localDateTime.format(dateTimeFormatter));
        LocalDateTime of2 = LocalDateTime.of(2022, 12, 21, 19, 35, 44);
        System.out.println(localDateTime.format(dateTimeFormatter));

时间日期的比较

        // 比较
        int flag = of1.compareTo(of2);// of1 > of2 返回1; 相等返回0; of1 < of2 返回-1
        System.out.println(flag);// value:-1
        Boolean flag1 = of1.equals(of2);// 兄弟们想必equals不需要我多说了吧。
        System.out.println(flag1);// value:false
        Boolean flag2 = of1.isEqual(of2);
        System.out.println(flag2);// value:false
        Boolean flag3 = of1.isAfter(of2); //of1 是否在 of2 之前
        System.out.println(flag3);// value:false
        Boolean flag4 = of1.isBefore(of2);//of1 是否在 of2 之后
        System.out.println(flag4);// value:true

一些简单的时间加减运算

        // 修改
        // 这里太简单了~~~~~~ 单纯的增加减少
        // 我是从别的地方粘过来的~~~ 太简单了兄弟们勿怪!
        LocalDate yyyyMMdd = LocalDate.now();
        LocalDate addOneDay = yyyyMMdd.plusDays(1L); //添加一日
        LocalDate addOneMonths = yyyyMMdd.plusMonths(1L);//添加一月
        LocalDate addOneYears = yyyyMMdd.plusYears(1L);//添加一年
        LocalDate addOneWeeks = yyyyMMdd.plusWeeks(1L);//添加一周

        LocalDate delOneDay = yyyyMMdd.minusDays(1L); //减去一日
        LocalDate delOneMonths = yyyyMMdd.minusMonths(1L);//减去一月
        LocalDate delOneYears = yyyyMMdd.minusYears(1L);//减去一年
        LocalDate delOneWeeks = yyyyMMdd.minusWeeks(1L);//减去一周
        System.out.println("LocalDate yyyyMMdd 当前时间: " + yyyyMMdd);
        System.out.println("*********LocalDate yyyyMMdd 添加 操作*********");
        System.out.println("LocalDate yyyyMMdd 添加一日: " + addOneDay);
        System.out.println("LocalDate yyyyMMdd 添加一月: " + addOneMonths);
        System.out.println("LocalDate yyyyMMdd 添加一年: " + addOneYears);
        System.out.println("LocalDate yyyyMMdd 添加一周: " + addOneWeeks);
        System.out.println("*********LocalDate yyyyMMdd 减 操作*********");
        System.out.println("LocalDate yyyyMMdd 减去一日: " + delOneDay);
        System.out.println("LocalDate yyyyMMdd 减去一月: " + delOneMonths);
        System.out.println("LocalDate yyyyMMdd 减去一年: " + delOneYears);
        System.out.println("LocalDate yyyyMMdd 减去一周: " + delOneWeeks);
        System.out.println("####################################################################");
        LocalTime HHmmssSSS = LocalTime.now();
        LocalTime addOneHours = HHmmssSSS.plusHours(1L); //添加1小时
        LocalTime addOneMinutes = HHmmssSSS.plusMinutes(1L);//添加1分钟
        LocalTime addOneSeconds = HHmmssSSS.plusSeconds(1L);//添加1秒
        LocalTime addOneNanos = HHmmssSSS.plusNanos(1L);//添加1纳秒

        LocalTime delOneHours = HHmmssSSS.minusHours(1L); //减去1小时
        LocalTime delOneMinutes = HHmmssSSS.minusMinutes(1L);//减去1分钟
        LocalTime delOneSeconds = HHmmssSSS.minusSeconds(1L);//减去1秒
        LocalTime delOneNanos = HHmmssSSS.minusNanos(1L);//减去1纳秒

        System.out.println("LocalTime HHmmssSSS 当前时间: " + HHmmssSSS);
        System.out.println("*********LocalTime HHmmssSSS 添加 操作*********");
        System.out.println("LocalTime HHmmssSSS 添加1小时: " + addOneHours);
        System.out.println("LocalTime HHmmssSSS 添加1分钟: " + addOneMinutes);
        System.out.println("LocalTime HHmmssSSS 添加1秒: " + addOneSeconds);
        System.out.println("LocalTime HHmmssSSS 添加1纳秒: " + addOneNanos);
        System.out.println("*********LocalTime HHmmssSSS 减 操作*********");
        System.out.println("LocalTime HHmmssSSS 减去1小时: " + delOneHours);
        System.out.println("LocalTime HHmmssSSS 减去1分钟: " + delOneMinutes);
        System.out.println("LocalTime HHmmssSSS 减去1秒: " + delOneSeconds);
        System.out.println("LocalTime HHmmssSSS 减去1纳秒: " + delOneNanos);
        System.out.println("####################################################################");
        LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
        LocalDateTime localDateTimeAddOneDay = yyyyMMddHHmmssSSS.plusDays(1L); //添加一日
        LocalDateTime localDateTimeAddOneMonths = yyyyMMddHHmmssSSS.plusMonths(1L);//添加一月
        LocalDateTime localDateTimeAddOneYears = yyyyMMddHHmmssSSS.plusYears(1L);//添加一年
        LocalDateTime localDateTimeAddOneWeeks = yyyyMMddHHmmssSSS.plusWeeks(1L);//添加一周
        LocalDateTime localDateTimeAddOneHours = yyyyMMddHHmmssSSS.plusHours(1L); //添加1小时
        LocalDateTime localDateTimeAddOneMinutes = yyyyMMddHHmmssSSS.plusMinutes(1L);//添加1分钟
        LocalDateTime localDateTimeAddOneSeconds = yyyyMMddHHmmssSSS.plusSeconds(1L);//添加1秒
        LocalDateTime localDateTimeAddOneNanos = yyyyMMddHHmmssSSS.plusNanos(1L);//添加1纳秒
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 当前时间: " + yyyyMMddHHmmssSSS);
        System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********");
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一日: " + localDateTimeAddOneDay);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一月: " + localDateTimeAddOneMonths);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一年: " + localDateTimeAddOneYears);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一周: " + localDateTimeAddOneWeeks);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1小时: " + localDateTimeAddOneHours);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1分钟: " + localDateTimeAddOneMinutes);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1秒: " + localDateTimeAddOneSeconds);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1纳秒: " + localDateTimeAddOneNanos);
        LocalDateTime localDateTimeDelOneDay = yyyyMMddHHmmssSSS.minusDays(1L); //减去一日
        LocalDateTime localDateTimeDelOneMonths = yyyyMMddHHmmssSSS.minusMonths(1L);//减去一月
        LocalDateTime localDateTimeDelOneYears = yyyyMMddHHmmssSSS.minusYears(1L);//减去一年
        LocalDateTime localDateTimeDelOneWeeks = yyyyMMddHHmmssSSS.minusWeeks(1L);//减去一周
        LocalDateTime localDateTimeDelOneHours = yyyyMMddHHmmssSSS.minusHours(1L); //减去1小时
        LocalDateTime localDateTimeDelOneMinutes = yyyyMMddHHmmssSSS.minusMinutes(1L);//减去1分钟
        LocalDateTime localDateTimeDelOneSeconds = yyyyMMddHHmmssSSS.minusSeconds(1L);//减去1秒
        LocalDateTime localDateTimeDelOneNanos = yyyyMMddHHmmssSSS.minusNanos(1L);//减去1纳秒
        System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 减 操作*********");
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一日: " + localDateTimeDelOneDay);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一月: " + localDateTimeDelOneMonths);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一年: " + localDateTimeDelOneYears);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去一周: " + localDateTimeDelOneWeeks);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1小时: " + localDateTimeDelOneHours);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1分钟: " + localDateTimeDelOneMinutes);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1秒: " + localDateTimeDelOneSeconds);
        System.out.println("LocalDateTime yyyyMMddHHmmssSSS 减去1纳秒: " + localDateTimeDelOneNanos);


        // 指定到对应日期
        LocalDate withDayOfMonth = yyyyMMdd.withDayOfMonth(20);
        System.out.println("LocalDate 直接指定到当月第几号: " + withDayOfMonth);

        LocalDate withDayOfYear = yyyyMMdd.withDayOfYear(20);
        System.out.println("LocalDate 直接指定到当年第几天: " + withDayOfYear);

        LocalDate withYear = yyyyMMdd.withYear(2000);
        System.out.println("LocalDate 当前时间直接指定年份: " + withYear);

        LocalDate withMonth = yyyyMMdd.withMonth(6);
        System.out.println("LocalDate 当前时间直接指定月份: " + withMonth);

其他相关:

        // 其他
        // 时间戳
        System.currentTimeMillis();

        //

        // localDateTime 总是代表本地时区如果需要时区则需要使用
        ZonedDateTime zdt01 = ZonedDateTime.now(); // 默认时区
        ZonedDateTime zdt02 = ZonedDateTime.now(ZoneId.of("America/New_York")); // 用指定时区获取当前时间
        System.out.println(zdt01);// value:2023-06-14T18:22:05.245+08:00[Asia/Shanghai]
        System.out.println(zdt02);// value:2023-06-14T06:22:05.245-04:00[America/New_York]


        // 这两个方法目前没搞懂,后续如果研究 ZonedDateTime 和 OffsetDateTime 我会继续补充目前先放着吧~~
        //LocalDateTime.now().atZone()
        //LocalDateTime.now().atOffset();

补充: 本来有方法一直用不明白后来,休息了一圈文章发完我就突然灵光乍现哈哈哈!主要是之前太蠢了!
我用当前时间不同时区放进去,最后转换成时间打印不同时区都是一个值,我一下就疑惑了。后面才反应过来我传进去的时间都是无时区的 LocalDateTime 当前时间!!! 时间是个固定的值! 可不就是一样的嘛!

        ZonedDateTime zonedDateTime = LocalDateTime.now().atZone(ZoneId.of("America/New_York"));
        System.out.println(zonedDateTime);//2023-06-15T10:53:01.460-04:00[America/New_York]
        System.out.println(zonedDateTime.format(dateTimeFormatter));//2023-06-15 10:53:01

        ZonedDateTime zonedDateTime1 = LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println(zonedDateTime1);//2023-06-15T10:53:01.460+08:00[Asia/Shanghai]
        System.out.println(zonedDateTime1.format(dateTimeFormatter));//2023-06-15 10:53:01

		// 虽然打印出来的时间都是相同的但是 isEqual 确实false 就是因为 zonedDateTime 带有时区
        System.out.println(zonedDateTime.isEqual(zonedDateTime1));//false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值