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 -> DateTime
DateTime dateTime = new DateTime(new Date());
//DateTime -> Date
Date d1 = new Date(dateTime.getMillis());
Date d2 = dateTime.toDate();
// 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();
參考文檔