【joda-time】方法积累

1.介绍

    提供用于处理时间的方便类库,比 JDK 自带的 API 方便。详情移步官网


2. 积累


1 .   DateTime

       joda-time 提供强大的 DateTime 构造函数 ,可以将各种各样的数据都转为 DateTime 类型 ,以方便后续操作 。

★  long  :  时间的毫秒级别
★  Date  : JDK中 的类型
★  String : ISO8601 形式的字符串
★  Calendar  : JDK 中的 Calendar 
★  任何 Joda-time date-time 类


 i.e :

        Calendar calendar = Calendar.getInstance();
        DateTime dateTime = new DateTime(calendar); //Jdk Calendar
        DateTime dateTime1 = new DateTime(new Date().getTime()); //long
        DateTime dateTime2 = new DateTime(new Date()); // Jdk Date
        DateTime dateTime3 = new DateTime();
        DateTime dateTime4 = DateTime.now();
        DateTime dateTime5 = new DateTime("2016-08-31");
        DateTime dateTime6 = new DateTime(2016,8,31,9,10);
        DateTime dateTime7 = DateTime.parse("20171110", DateTimeFormat.forPattern("YYYYMMdd"));
        long now = dateTime4.getMillis(); //DateTime → long
        Date date2 = dateTime4.toDate();  //DateTime → Jdk Date
        String string = dateTime4.toString("y-MM-dd"); //DateTime → String
        String str = dateTime4.toString(DateTimeFormat.forPattern("y-M-d zz H:m:s.SSS ZZ"));
        System.out.println(dateTime.toString()); //2016-08-31T09:11:05.238+08:00
        System.out.println(dateTime1.toString());//同上
        System.out.println(dateTime2.toString());//同上
        System.out.println(dateTime3.toString());//同上
        System.out.println(dateTime4.toString());//同上
        System.out.println(dateTime5.toString()); //2016-08-31T00:00:00.000+08:00
        System.out.println(dateTime6.toString()); //2016-08-31T09:10:00.000+08:00
        System.out.println(string); //2016-08-31
        System.out.println(str);  //2016-8-31 CST 9:11:5.238 +08:00


pattern 子母代表的含义如下表(详情参看 Joda-time 官网):

Symbol  Meaning                      Presentation  Examples
------  -------                      ------------  -------
 G       era                          text          AD
 C       century of era (>=0)         number        20
 Y       year of era (>=0)            year          1996

 x       weekyear                     year          1996
 w       week of weekyear             number        27
 e       day of week                  number        2
 E       day of week                  text          Tuesday; Tue

 y       year                         year          1996
 D       day of year                  number        189
 M       month of year                month         July; Jul; 07
 d       day of month                 number        10

 a       halfday of day               text          PM
 K       hour of halfday (0~11)       number        0
 h       clockhour of halfday (1~12)  number        12

 H       hour of day (0~23)           number        0
 k       clockhour of day (1~24)      number        24
 m       minute of hour               number        30
 s       second of minute             number        55
 S       fraction of second           number        978

 z       time zone                    text          Pacific Standard Time; PST
 Z       time zone offset/id          zone          -0800; -08:00; America/Los_Angeles

 '       escape for text              delimiter
 ''      single quote                 literal       
   其中字母可重叠使用,例如 :

                  M :      8(月)

                  MM : 08(月)

                  Z : -0800

                  ZZ  : -08:00

                  S : 9

                  SS : 97

                  SSS : 978


2. 获取当前时间的开始 | 结束

      i.e :获取 2016年8月31日的开始和 结束

        DateTime dateTime = new DateTime();
        DateTime begin = dateTime.withTimeAtStartOfDay();
        DateTime begin2 = dateTime.millisOfDay().withMinimumValue();
        DateTime end = dateTime.millisOfDay().withMaximumValue();
        System.out.println(begin); //2016-08-31T00:00:00.000+08:00
        System.out.println(begin2); //2016-08-31T00:00:00.000+08:00
        System.out.println(end); //2016-08-31T23:59:59.999+08:00

3. 年月日等的加减操作

i.e :   +    plus

            -    minus

        DateTime dateTime = DateTime.parse("2016-08-31 08:00:00",DateTimeFormat.forPattern("y-MM-dd HH:mm:ss"));
        DateTime dateTime1 = dateTime.plusHours(2); // 2016-08-31T10:00:00.000+08:00
        DateTime dateTime2 = dateTime.plusDays(2); //2016-09-02T08:00:00.000+08:00
        DateTime dateTime3 = dateTime.minusMonths(2); //2016-06-30T08:00:00.000+08:00
        DateTime dateTime4 = dateTime.plusYears(2); //2018-08-31T08:00:00.000+08:00
        System.out.println(dateTime1);
        System.out.println(dateTime2);
        System.out.println(dateTime3);
        System.out.println(dateTime4);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值