美文网首页Joda time
Joda-Time 故事3 DateTime 和JDK的协作

Joda-Time 故事3 DateTime 和JDK的协作

作者: ba2cb747365a | 来源:发表于2018-11-21 22:11 被阅读94次

    一、背景

    jdk8中java.time包已经引进了joda-time,新应用的日期操作逻辑应该更多会使用新的api。但是传统的java.util日期包在很多框架内还是广泛使用的。比如mybatis中数据库timestamp类型映射的java类型就是java.util.Date。为啥不是java.sql.Date,感觉这个类感觉一点存在感都没有。本章介绍一下Joda-Time与java.util日期api的互转。

    二、核心对象

    2.1 DateTime

    前面介绍过,出门左转可以看到

    2.2 Date

    不用介绍了,都用过,使用也很简单,当前日期 new Date(),时间戳 getTime()

    2.3 Calendar

    用的少的人,比如我提到这个类基本上就得百度了
    援引jdk doc,地址:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

    2.4 GregorianCalendar

    同上,不百度不会用。
    援引jdk doc,地址:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
    GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

    三、使用案例

    DATETIME类有一个构造函数,它把一个对象作为输入。特别的是,这个构造函数可以传递JDK Date、JDK Calendar 或JDK GregorianCalendar(它还接受ISO8601格式化的String或表示毫秒的long)。这是与JDK的互操作性的一部分。与JDK互操作性的另一部分是通过DATETIME返回JDK对象的方法进行的。
    因此,JoDaDeTime/JDK日期之间的转换案例如下:
    3.1 DateTime与Date互转

     // from Joda to JDK
        DateTime dt = new DateTime();
        Date jdkDate = dt.toDate();
    
        // from JDK to Joda
        dt = new DateTime(jdkDate);
    

    3.2 DateTime与Calendar互转

    // from Joda to JDK
        DateTime dt = new DateTime();
        Calendar jdkCal = dt.toCalendar(Locale.CHINESE);
    
        // from JDK to Joda
        dt = new DateTime(jdkCal);
    

    3.3 DateTime与GregorianCalendar互转

     // from Joda to JDK
        DateTime dt = new DateTime();
        GregorianCalendar jdkGCal = dt.toGregorianCalendar();
    
        // from JDK to Joda
        dt = new DateTime(jdkGCal);
    

    相关文章

      网友评论

        本文标题:Joda-Time 故事3 DateTime 和JDK的协作

        本文链接:https://www.haomeiwen.com/subject/vvphqqtx.html