Joda Time 日期处理

本文详细介绍了Joda-Time库的使用,包括其在Java日期处理中的优势,如何创建日期,日期转换,日期计算,以及日期比较等关键操作。Joda-Time解决了JDK自带日期类的不足,提供了更强大、易用的日期处理功能。

1、Joda Time出现的背景

  JDK1.8之前 只支持java.util.Datel、java.util.Calendar

  问题:Calendar类操作繁琐 如:月份从0开始计算。

     DateFormat线程不安全,两个线程同时使用formatter解析日期,无法预期结果

  JDK1.8后 重写日期库,引入Java.time包,大量借鉴Joda-time

 

2、Joda Time项目

  pom依赖:

    // JODA TIME
    compile'joda-time:joda-time:2.9.9'

 

  使用:

  创建日期:

    

        // 获取当前日期
        DateTime nowDate = new DateTime();  //2018-11-29T13:51:45.602+08:00
        
        /*******DateTime 转成Date、String********/
        Date date = nowDate.toDate();    //Thu Nov 29 13:52:46 CST 2018
        String dateStr = nowDate.toString("yyyy-MM-dd HH:mm:ss");    //2018-11-29 13:54:11
        
        /*******String 转成Date********/
        Date strDate = DateTime.parse("2018-11-29 13:54:11",DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();    //Thu Nov 29 13:54:11 CST 2018

        /*******Date 转成Str********/
        String dateStr1 = new DateTime(new Date()).toString("yyyy-MM-dd HH:mm:ss");    //2018-11-29 14:05:15
        
        
        /******* 日期计算  ********/
        DateTime minusDays = nowDate.minusDays(1);    //昨天     2018-11-28T14:13:13.087+08:00
        DateTime plusDays = nowDate.plusDays(1);    //明天    2018-11-30T14:12:40.398+08:00
        DateTime minusMonths = nowDate.minusMonths(1);    //一月前    2018-10-29T14:12:14.446+08:00
        DateTime plusMonths = nowDate.plusMonths(1);     //一月后     2018-12-29T14:29:51.924+08:00
        
        /******* 计算区间天数  ********/
        DateTime begin = new DateTime("2018-11-10"); 
        DateTime end = new DateTime("2018-11-20"); 
        
        Period p = new Period(begin, end, PeriodType.days());
        int days = p.getDays();     // 10
        
        /******* 计算区间天数  ********/
        Interval i = new Interval(begin, end); 
        boolean contained = i.contains(new DateTime("2018-11-15"));     // true
        
        /******* 日期比较  ********/
        boolean after = begin.isAfter(end);        // false
        boolean before = begin.isBefore(end);     // true
        boolean equal = begin.isEqual(end);     // false

 

转载于:https://www.cnblogs.com/lch666/p/10038565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值