搞定 Joda-Time 常用操作

1 开始使用

  compile 'joda-time:joda-time:2.9.9'

2 时间实例

        // 年,月,日,时,分,秒,毫秒
        DateTime dateTime1 = new DateTime(2017,6, 16, 0, 0, 0, 333);
        // 时间字符串
        DateTime dateTime2 = new DateTime("2017-6-16 15:43:50");
        // 毫秒级时间
        DateTime dateTime3 = new DateTime(1481006233254L);
        // 系统时间
        DateTime dateTime4 = new DateTime();
        // Date -> DateTime
        DateTime dateTime5 = new DateTime(new Date());
        // Calendar -> DateTime
        DateTime dateTime6 = new DateTime(Calendar.getInstance());
        

3 String -> DateTime

// 方法1
DateTime dateTime = new DateTime("2017-6-16 15:43:50");

// 方法2
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dateTime= DateTime.parse("2017-6-16 23:22:45", format);




4 DateTime -> String

//方法1 
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String time = dateTime.toString(format);

//方法2 
String time = dateTime.toString("yyyy-MM-dd HH:mm:ss");

5 时间比较

        //和当前时间比
        boolean b1 = dateTime.isAfterNow();
        boolean b2 = dateTime.isBeforeNow();
        boolean b3 = dateTime.isEqualNow(); 

        //和其他日期比
        boolean b1 = dateTime.isAfter(dateTime2);
        boolean b2 = dateTime.isBefore(dateTime2);
        boolean b3 = dateTime.isEqual(dateTime2);

6 设置时间 withXXX

7 增加时间 plusXXX

8 减少时间 minusXXX

9 获取时间 getXXX

10 和jdk Date Calendar 转化

  • Date
// Date -> DateTime
DateTime dateTime = new DateTime(new Date());
       
//DateTime -> Date 
Date d1 = new Date(dateTime.getMillis());  
Date d2 = dateTime.toDate();  

  • Calendar
 // Calendar -> DateTime
DateTime dateTime = new DateTime(Calendar.getInstance());
        
        
//DateTime -> Calendar 

Calendar c1 = Calendar.getInstance();  
c1.setTimeInMillis(dateTime.getMillis());  


Calendar c2 = dateTime.toCalendar(Locale.getDefault());

11 时区相关

dateTime.toString("yyyy年MM月dd日 HH:mm:ss", Locale.CHINA);
       //默认设置为日本时区
        DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));
        DateTime dt1 = new DateTime();
        System.out.println(dt1.toString("yyyy-MM-dd HH:mm:ss"));

        //伦敦时区
        DateTime dt2 = new DateTime(DateTimeZone.forID("Europe/London"));
        System.out.println(dt2.toString("yyyy-MM-dd HH:mm:ss"));
        

12 日期相隔

  Days.daysBetween(start, end).getDays();
  Months.monthsBetween(start, end).getMonths();
  Years.yearsBetween(start, end).getYears();
  

13 相关类


        //某一时刻 
        Instant instant=new Instant();
        
        //用于替代Calendar
        DateTime dateTime=new DateTime();
        
        //本地日期,不带时区信息
        LocalDate localDate=new LocalDate();
        
        //本地时间,不带时区信息
        LocalTime localTime=new LocalTime();
        
        //本地日期时间,不带时区信息
        LocalDateTime localDateTime=new LocalDateTime();

14 时间段

Interval:它保存了一个开始时刻和一个结束时刻,因此能够表示一段时间,并进行这段时间的相应操作

Period:它保存了一段时间,比如:6个月,3天,7小时这样的概念。可以直接创建Period,或者从Interval对象构建

Duration:它保存了一个精确的毫秒数。同样地,可以直接创建Duration,也可以从Interval对象构建

15 相关场景

        //获取 今天的开始时间 2017-06-16 00:00:00
        nowTime.withTimeAtStartOfDay();
        
        
        //获取 今天的结束时间2017-06-16 23:59:59
        nowTime.minuteOfDay().withMaximumValue();
        
        

参考文档


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值