Joda-Time開源庫
Joda-Time是一個面向 Java™ 平臺的易於使用的開源時間日期庫。
依賴
1 <dependency> 2<groupId>joda-time</groupId> 3<artifactId>joda-time</artifactId> 4<version>2.9.9</version> 5 </dependency>
用法
1.時間日期類生成
1 //方法一:取系統點間 2 DateTime dt1 = new DateTime(); 3 4 //方法二:通過java.util.Date物件生成 5 DateTime dt2 = new DateTime(new Date()); 6 7 //方法三:指定年月日點分秒生成(引數依次是:年,月,日,時,分,秒,毫秒) 8 DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0); 9 10 //方法四:ISO8601形式生成 11 DateTime dt4 = new DateTime("2012-05-20"); 12 DateTime dt5 = new DateTime("2012-05-20T13:14:00"); 13 14 //只需要年月日的時候 15 LocalDate localDate = new LocalDate(2009, 9, 6);// September 6, 2009 16 17 //只需要時分秒毫秒的時候 18 LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM
2.獲取年月日點分秒
1 DateTime dt = new DateTime(); 2 //年 3 int year = dt.getYear(); 4 //月 5 int month = dt.getMonthOfYear(); 6 //日 7 int day = dt.getDayOfMonth(); 8 //星期 9 int week = dt.getDayOfWeek(); 10 //點 11 int hour = dt.getHourOfDay(); 12 //分 13 int min = dt.getMinuteOfHour(); 14 //秒 15 int sec = dt.getSecondOfMinute(); 16 //毫秒 17 int msec = dt.getMillisOfSecond();
3.星期的處理
1 DateTime dt = new DateTime(); 2 3 //星期 4 switch(dt.getDayOfWeek()) { 5 case DateTimeConstants.SUNDAY: 6System.out.println("星期日"); 7break; 8 case DateTimeConstants.MONDAY: 9System.out.println("星期一"); 10break; 11 case DateTimeConstants.TUESDAY: 12System.out.println("星期二"); 13break; 14 case DateTimeConstants.WEDNESDAY: 15System.out.println("星期三"); 16break; 17 case DateTimeConstants.THURSDAY: 18System.out.println("星期四"); 19break; 20 case DateTimeConstants.FRIDAY: 21System.out.println("星期五"); 22break; 23 case DateTimeConstants.SATURDAY: 24System.out.println("星期六"); 25break; 26 }
4.與JDK物件轉換
1 DateTime dt = new DateTime(); 2 3 //轉換成java.util.Date物件 4 Date d1 = new Date(dt.getMillis()); 5 Date d2 = dt.toDate(); 6 7 //轉換成java.util.Calendar物件 8 Calendar c1 = Calendar.getInstance(); 9 c1.setTimeInMillis(dt.getMillis()); 10 Calendar c2 = dt.toCalendar(Locale.getDefault());
5.日期前後推算
1 DateTime dt = new DateTime(); 2 3 //昨天 4 DateTime yesterday = dt.minusDays(1); 5 //明天 6 DateTime tomorrow = dt.plusDays(1); 7 //1個月前 8 DateTime before1month = dt.minusMonths(1); 9 //3個月後 10 DateTime after3month = dt.plusMonths(3); 11 //2年前 12 DateTime before2year = dt.minusYears(2); 13 //5年後 14 DateTime after5year = dt.plusYears(5);
6.時間比較
DateTime d1 = new DateTime("2012-02-01"); DateTime d2 = new DateTime("2012-05-01"); //和系統時間比 boolean b1 = d1.isAfterNow(); boolean b2 = d1.isBeforeNow(); boolean b3 = d1.isEqualNow(); //和其他日期比 boolean f1 = d1.isAfter(d2); boolean f2 = d1.isBefore(d2); boolean f3 = d1.isEqual(d2);
7.時間差
1 DateTime begin = new DateTime("2012-02-01"); 2 DateTime end = new DateTime("2012-05-01"); 3 4 //計算區間毫秒數 5 Duration d = new Duration(begin, end); 6 long time = d.getMillis(); 7 8 //計算區間天數 9 Period p = new Period(begin, end, PeriodType.days()); 10 int days = p.getDays(); 11 12 //計算特定日期是否在該區間內 13 Interval i = new Interval(begin, end); 14 boolean contained = i.contains(new DateTime("2012-03-01"));
8.格式化輸出
1 DateTime dateTime = new DateTime(); 2 3 String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa"); 4 String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss"); 5 String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa"); 6 String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ"); 7 String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z");
Joda-Time的Util模板
1 public class DataTimeUtil{ 2 3public static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss"; 4 5public static Date strToDate(String dataTimeStr){ 6DataTimeFormatter dateTimeFormatter = DataTimeFormat.forPattern(STANDARD_FORMAT); 7DateTime dateTime = dateTimeFormatter.parseDateTime(dataTimeStr); 8return dateTime.toDate(); 9} 10 11public static String dateToStr(Date date){ 12if (date = null){ 13return StringUtils.EMPTY; 14} 15DateTime dateTime = new Datetime(date); 16return datetime.toString(STANDARD_FORMAT); 17} 18 }
參考:https://www.ibm.com/developerworks/cn/java/j-jodatime.html