• Joda Time 日期处理


    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
  • 相关阅读:
    第七课 GDB调试 (下)
    设计模式之原型模式
    设计模式之再读重构
    设计模式之代理模式
    设计模式之建造者模式
    设计模式之模板方法模式
    设计模式之抽象工厂模式
    设计模式之工厂模式
    设计模式之单例模式
    设计模式之6大原则
  • 原文地址:https://www.cnblogs.com/lch666/p/10038565.html
Copyright © 2020-2023  润新知