package me.test; import org.joda.time.DateTime; import org.joda.time.Period; import org.joda.time.format.*; import java.util.Calendar; import java.util.Locale; public class TestJodaTime { public static void main(String[] args) throws InterruptedException { // JDK Caendar, Date -> Joda DateTime System.out.println(new DateTime(Calendar.getInstance())); System.out.println(new DateTime(Calendar.getInstance().getTime())); System.out.println("*****************"); DateTime dt = DateTime.now(); // Joda DateTime -> JDK Caendar, Date System.out.println(dt); System.out.println(dt.toDate()); System.out.println(dt.toCalendar(Locale.CHINA)); // Joda DateTime plus/minus DateTime dt1 = dt.plusYears(1).plusDays(1).minusHours(1); System.out.println(dt1); // Joda DateTime field access System.out.println("----------------"); System.out.println(dt.getMonthOfYear()); System.out.println(dt.monthOfYear().getAsText()); System.out.println(dt.monthOfYear().getAsShortText(Locale.FRENCH)); System.out.println("================"); // format : ISO DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); String str = fmt.print(dt); System.out.println(str); // format : pattern fmt = DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss.SSS Z"); str = fmt.withLocale(Locale.ENGLISH).print(dt); System.out.println(str); System.out.println("################"); // parse : pattern DateTime dt2 = fmt.parseDateTime("2000/01/02 03:04:05.006 +0800"); System.out.println(dt2); // duration // in prod env, consider using StopWatch (from commons-lang3, guava, spring-core etc) long start = System.currentTimeMillis(); //Thread.sleep(3456); long end = System.currentTimeMillis(); Period period = new Period(start, end + 1000 * 1000 + 3456); System.out.println("~~~~~~~~~~~~~~~~~"); System.out.println(ISOPeriodFormat.standard().print(period)); PeriodFormatter periodFormatter = new PeriodFormatterBuilder() .appendDays() .appendSuffix(" minute", " minutes") .appendSeparator(" ") .appendSeconds() .appendSuffix(" second", " seconds") .appendSeparator(" ") .appendMillis() .appendSuffix(" ms") .toFormatter(); System.out.println(periodFormatter.print(period)); } }