Java Joda-Time 知識(shí)總結(jié)

1 開(kāi)始使用

  implementation 'joda-time:joda-time:2.10.10'

2 時(shí)間實(shí)例

        // 年,月,日,時(shí),分,秒,毫秒
DateTime dateTime1 = new DateTime(2017,6, 16, 0, 0, 0, 333);
        // 時(shí)間字符串
DateTime dateTime2 = new DateTime("2017-6-16 15:43:50");
        // 毫秒級(jí)時(shí)間
DateTime dateTime3 = new DateTime(1481006233254L);
        // 系統(tǒng)時(shí)間
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 時(shí)間比較

//和當(dāng)前時(shí)間比
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 設(shè)置時(shí)間 withXXX

7 增加時(shí)間 plusXXX

8 減少時(shí)間 minusXXX

9 獲取時(shí)間 getXXX

10 和 jdk Date Calendar 轉(zhuǎn)化

  • 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 時(shí)區(qū)相關(guān)

dateTime.toString("yyyy年MM月dd日 HH:mm:ss", Locale.CHINA);
 //默認(rèn)設(shè)置為日本時(shí)區(qū)
DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));
DateTime dt1 = new DateTime();
System.out.println(dt1.toString("yyyy-MM-dd HH:mm:ss"));

//倫敦時(shí)區(qū)
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 相關(guān)類(lèi)


        //某一時(shí)刻 
Instant instant=new Instant();
        
        //用于替代Calendar
DateTime dateTime=new DateTime();
        
        //本地日期,不帶時(shí)區(qū)信息
LocalDate localDate=new LocalDate();
        
        //本地時(shí)間,不帶時(shí)區(qū)信息
LocalTime localTime=new LocalTime();
        
        //本地日期時(shí)間,不帶時(shí)區(qū)信息
LocalDateTime localDateTime=new LocalDateTime();

14 時(shí)間段

Interval:它保存了一個(gè)開(kāi)始時(shí)刻和一個(gè)結(jié)束時(shí)刻,因此能夠表示一段時(shí)間,并進(jìn)行這段時(shí)間的相應(yīng)操作

Period:它保存了一段時(shí)間,比如:6個(gè)月,3天,7小時(shí)這樣的概念??梢灾苯觿?chuàng)建Period,或者從Interval對(duì)象構(gòu)建

Duration:它保存了一個(gè)精確的毫秒數(shù)。同樣地,可以直接創(chuàng)建Duration,也可以從Interval對(duì)象構(gòu)建

15 相關(guān)場(chǎng)景

        //獲取 今天的開(kāi)始時(shí)間 2017-06-16 00:00:00
nowTime.withTimeAtStartOfDay();
        
        
        //獲取 今天的結(jié)束時(shí)間2017-06-16 23:59:59
nowTime.minuteOfDay().withMaximumValue();
        
        

參考文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容