Java Joda-Time 知识总结

1 开始使用

  • https://www.joda.org/joda-time/
  implementation 'joda-time:joda-time:2.10.10'

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();
        
        

参考文档

  • 使用Joda-Time优雅的处理日期时间 http://www.jianshu.com/p/efdeda608780

你可能感兴趣的:(Java Joda-Time 知识总结)