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();
參考文檔
- 使用Joda-Time優雅的處理日期時間 http://www.jianshu.com/p/efdeda608780