joda-time可以简化java.util.Date和java.Calendar对时间和日期的操作,具体使用可以参照如下示例
@Test public void test() { DateTime dt = new DateTime(); System.out.println(dt.getYear() + "-" + dt.getMonthOfYear() + "-" + dt.getDayOfMonth() + " " + dt.getHourOfDay() + ":" + dt.getMinuteOfHour() + ":" + dt.getSecondOfMinute()); // 格式化带Locale,输出==> 2015-11-21 11:39:56 星期六 System.out.println(dt.toString("yyyy-MM-dd HH:mm:ss EE", Locale.CHINESE)); DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMddHHmmss"); // 时间解析 DateTime dt2 = DateTime.parse("20150909101112", dtf); // 格式化输出 System.out.println(dt2.toString("yyyy/MM/dd HH:mm:ss")); // 根据指定格式,将时间字符串转换成DateTime对象,这里的格式和上面的输出格式是一样的 DateTime dt3 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss") .parseDateTime("2015-12-26 03:27:39"); System.out.println("dt3=" + dt3.toString("yyyy/MM/dd HH:mm:ss")); // 增加日期 DateTime dt4 = dt3.plusDays(-1) .plusHours(1) .plusMinutes(1) .plusSeconds(1); System.out.println("dt4=" + dt4.toString("yyyy/MM/dd HH:mm:ss")); //取得 3秒前的时间 DateTime dt5 = dt4.secondOfMinute().addToCopy(-3); dt4.getSecondOfMinute();// 得到整分钟后,过的秒钟数 dt4.getSecondOfDay();// 得到整天后,过的秒钟数 dt4.secondOfMinute();// 得到分钟对象,例如做闰年判断等使用 System.out.println("dt5=" + dt5.toString("yyyy/MM/dd HH:mm:ss") + ",seconds=" + dt5.getSecondOfMinute()); //计算两个日期间隔的天数 LocalDate start = new LocalDate(2014, 12, 18); LocalDate end = new LocalDate(2015, 12, 18); int days = Days.daysBetween(start, end).getDays(); System.out.println("days=" + days); //判断是否闰月 org.joda.time.DateTime.Property month = dt.monthOfYear(); System.out.println("是否闰月:" + month.isLeap() + ", 是否闰年:" + dt.yearOfCentury().isLeap()); // DateTime与java.util.Date对象,当前系统TimeMillis转换 DateTime dt6 = new DateTime(new Date()); Date date = dt6.toDate(); DateTime dt7 = new DateTime(System.currentTimeMillis()); Calendar calendar = Calendar.getInstance(); dt = new DateTime(calendar); }