4.2基于joda-time的日期操作

具体开发中涉及日期操作的非常多,常见的场景主要有以下几个:

  • 当前日期转为字符串
  • 指定字符串转为日期
  • 取得两个日期之间的天数间隔
  • 取得两个日期之间的月份间隔
  • 当前日期增加多少天变为哪个日期
  • 当前日期增加多少月变为哪个日期
  • ......

Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。
Joda-Time主要的特点包括:

  1. 易于使用:Calendar让获取"正常的"的日期变得很困难,使它没办法提供简单的方法,而Joda-Time能够 直接进行访问域并且索引值1就是代表January。

  2. 易于扩展:JDK支持多日历系统是通过Calendar的子类来实现,这样就显示的非常笨重而且事实 上要实现其它日历系统是很困难的。Joda-Time支持多日历系统是通过基于Chronology类的插件体系来实现。

  3. 提供一组完整的功能:它打算提供 所有关系到date-time计算的功能.Joda-Time当前支持8种日历系统,而且在将来还会继续添加,有着比JDK Calendar更好的整体性能等等。

pom.xml引入:

       <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.9</version>
        </dependency>

下面是几个常见例子:
代码参见com.critc.JodaDateUtilTest

public static void main(String[] args) {
        //日期格式化
        DateTime dateTime = new DateTime(2012, 12, 13, 16, 30);
        System.out.println("当前日期格式化:" + dateTime.toString("yyyyMMdd HHmmss"));

        DateTimeFormatter format = DateTimeFormat.forPattern("yyyyMMddHHmmss");
        DateTime d2 = DateTime.parse("20170402120023", format);
        System.out.println("字符串格式化成日期:" + d2);

        //两个日期间隔多少天
        LocalDate start = new LocalDate(2012, 12, 14);
        LocalDate end = new LocalDate(2013, 01, 15);
        int days = Days.daysBetween(start, end).getDays();
        System.out.println("两个日期间隔天数:" + days);
        int months = Months.monthsBetween(start, end).getMonths();
        System.out.println("两个日期间隔月数:" + months);

        //当前天增加多少天
        dateTime = dateTime.plusDays(31);
        System.out.println("当前日期增加多少天变为:" + dateTime);
        dateTime = dateTime.plusMonths(2);
        System.out.println("当前日期增加多少月变为:" + dateTime);

    }

开发建议
实际开发中一定要将涉及日期处理的方法单独拿出来,统一格式,统一类中进行处理,万不可单独处理。

源码下载

本例子详细源码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 在Java中处理日期和时间是很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具...
    JohnShen阅读 100,179评论 5 44
  • SwiftDate概况 从Swift发布起,我们就没有放弃使用Swift。 当然,我们希望在项目能够轻松自如地管理...
    Mee_Leo阅读 13,444评论 1 13
  • 原文链接:http://www.cnblogs.com/lhj588/archive/2012/04/23/246...
    qtruip阅读 5,144评论 0 0
  • 最近项目中用到自定义日历组件,找来找去,最后发现GitHub的material-calendarview这个项目最...
    colin2017阅读 5,466评论 0 0
  • 真的很久没有写东西了 说好了的日记也没有勇气继续 可能是真的不知道留下的这些回忆到底值得珍惜还是什么 人们总说回忆...
    爱民谣怪我咯阅读 851评论 0 0