java8的LocaDatetime的便捷使用

1,关于LocaDateTime

Java的Date,Calendar类型使用起来并不是很方便,而且Date类(据说)有着线程不安全等诸多弊端。同时若不进行封装,会在每次使用时特别麻烦。于是Java8推出了线程安全、简易、高可靠的时间包。并且数据库中也支持LocalDateTime类型,在数据存储时候使时间变得简单。Java8这次新推出的包括三个相关的时间类型:LocalDateTime年月日十分秒;LocalDate日期;LocalTime时间;三个包的方法都差不多。

2,LocaDateTime的用法

以前我们进行时间字符串的转换是这样的

 /**
     * 字符串转时间
     * @param strDate
     * @return
     */
    public static  Date dateFormat(String strDate){
        //注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 ");
        SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
        Date date= null;
        //必须捕获异常
            try {
             date=sDateFormat.parse(strDate);

            System.out.println(date);
        } catch(
        ParseException px) {
            px.printStackTrace();
        }
        return date;
    }

现在是这样的

DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time = LocalDateTime.now();
String localTime = df.format(time);
LocalDateTime ldt = LocalDateTime.parse("2017-09-28 17:07:05",df);
System.out.println("LocalDateTime转成String类型的时间:"+localTime);
System.out.println("String类型的时间转成LocalDateTime:"+ldt);

以前我们计算时间是这样的

  //每天毫秒数
               long nd = 1000 * 24 * 60 * 60;
               //每小时毫秒数
               long nh = 1000 * 60 * 60;
               //每分钟毫秒数
               long nm = 1000 * 60;
               //获取一小时
               long oneTime = 60*1000*60;
               // 获得两个时间的毫秒时间差异
               long diff = singOutTime.getTime() - checkTimes.getTime()-oneTime;
               // 计算差多少小时
               long hour = diff % nd / nh;
               // 计算差多少分钟
               long min = diff % nd % nh / nm;

现在我们是这样计算的
这边我计算两个时间差是处理跨月的跨年的


    @Test
    public void testSummaryCount(){
        String strtime = "2019-05-30";
        String endtime = "2019-06-30";
        DateTimeFormatter sf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate endLocalDate = LocalDate.parse(endtime, sf);
        LocalDate strLocalDate = LocalDate.parse(strtime, sf);
        Long s = endLocalDate.toEpochDay()-strLocalDate.toEpochDay();
        LocalDate plusDaysResult = strLocalDate;
        for(int i =0;i<=s/7;i++){
            System.out.println(plusDaysResult);
            plusDaysResult = plusDaysResult.plusDays(7L);
        }

    }
  LocalDate localDate1 = LocalDate.of(2017, 10, 24);
        LocalDate localDate2 = LocalDate.of(2017, 10, 27);
        Period next = Period.between(localDate1, localDate2);
        System.out.println("相隔多少天:" + next.getDays());

locadatetime的一些常用方法

3,LocaDatetime的好处

关于好处感觉说再多也没啥,自己时间开发中使用起来就会发现,locaDateTime要比Date,Calendar类要好用很多,不过在springboot开发中如果有用到localdateTime和前端联调时需要注意locaDateTime时精确到时分秒,LocaDate是只有年月日,
在前端传值时需要加上注解

   @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

附件 LocaDateTime官方api

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值