Joda是一個java的處理時間類庫,須要jdk8的支持,是java.time (JSR-310).java
今天在無心中學習spring的文檔(9.6.2 Annotation-driven Formatting)的Formatter的的源碼的時候,發現這個時間類庫,因爲spring某些功能也依賴這個類庫,因此我決定瞧瞧是怎麼回事git
isAfterNow/isBeforeNow/isEqualNow
toDate/toCalendar
plusYears/plusMonths/plusDays
withZone
dt.getEra(); dt.getYear();//獲取當前年 dt.getWeekyear(); dt.getCenturyOfEra(); dt.getYearOfEra();//世紀年 dt.getYearOfCentury(); dt.getMonthOfYear();//獲取月份 dt.getWeekOfWeekyear();//這周是今年的第幾周 dt.getDayOfYear();//這天是今年的第幾天 dt.getDayOfMonth();//月份的多少好 dt.getDayOfWeek();//一個星期的第幾天
<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.4</version> </dependency>
JodaTimeTest.javaspring
package com.carl.spring.hello.bean; import org.joda.time.DateTime; import org.joda.time.Duration; import org.joda.time.Period; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatterBuilder; import org.junit.Test; import java.util.Date; import java.util.Locale; /** * @author Carl * @date 2016/9/2 */ public class JodaTimeTest { @Test public void dateTimeTest() { //2016/9/2 //當前時間 java.util.Date juDate = new Date(); //若是無參,也默認是當前時間的 DateTime dt = new DateTime(juDate); show(dt); } @Test public void dateTimeChange() { DateTime dt = new DateTime(); //把年改成2000年的 DateTime year2000 = dt.withYear(2000); //時間加兩個小時 DateTime twoHoursLater = dt.plusHours(2); show(dt);//2016-9-2 0:16 show(year2000);//2000-9-2 0:16 show(twoHoursLater);//2016-9-2 2:16 } @Test public void dateTimeText() { DateTime dt = new DateTime(); String monthName = dt.monthOfYear().getAsText(); //根據地區獲取Text String frenchShortName = dt.monthOfYear().getAsShortText(Locale.CHINA); boolean isLeapYear = dt.year().isLeap(); DateTime rounded = dt.dayOfMonth().roundFloorCopy(); System.out.println(monthName); System.out.println(frenchShortName); System.out.println(isLeapYear); //月份的最後一天 System.out.println(dt.dayOfMonth().getMaximumValue()); show(rounded); } @Test public void dateTimeArgs() { //實例就可以肯定年月日時分秒 DateTime dt = new DateTime(2005, 3, 26, 12, 0, 0, 0); //這裏可以進行時間的計算,plus就是加了,週期確定是那個接口的,裏面確定也有年月日時分秒 DateTime plusPeriod = dt.plus(Period.days(1)); DateTime plusDuration = dt.plus(new Duration(24L*60L*60L*1000L)); show(dt);//2005-3-26 12:0 //減一天 show(dt.plusDays(-1));//2005-3-25 12:0 show(plusPeriod);//2005-3-27 12:0 show(plusDuration);//2005-3-27 12:0 } @Test public void dataTimeFormat() { DateTimeFormatter fmt = new DateTimeFormatterBuilder() .appendDayOfMonth(1) .appendLiteral('-') .appendMonthOfYearShortText() .appendLiteral('-') .appendTwoDigitYear(1956) // pivot = 1956 .toFormatter(); DateTime dt = new DateTime(); System.out.println(dt.toString(fmt));//2-九月-16 } private void show(DateTime dateTime) { System.out.println(dateTime.getYear() + "-" + dateTime.getMonthOfYear() + "-" + dateTime.getDayOfMonth() + " " + dateTime.getHourOfDay() + ":" + dateTime.getMinuteOfHour()); } }