Joda time

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

2018-11-21  本文已影响94人  ba2cb747365a

一、背景

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);
上一篇下一篇

猜你喜欢

热点阅读