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

參考文檔


 

發佈了312 篇原創文章 · 獲贊 287 · 訪問量 260萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章