Ještě pořád se držíte JDK, když je po ruce Joda Time?


/*
 * Použití originálního Java API
 */
//vytvoření datumu 12.12.2007
Calendar cal = new GregorianCalendar(2007, 11, 12);
Date date = cal.getTime();
//nastavení hodiny v existujícím datumu
//(ještě že jsme si schovali Calendar objekt)
cal.set(Calendar.HOUR_OF_DAY, 5);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
date = cal.getTime();
//přičtení 1 měsíce k datu (pořád s sebou vlečeme calendar)
cal.add(Calendar.MONTH, 1);
date = cal.getTime();
//kolik minut je to od začátku roku?
Calendar startOfTheYear = new GregorianCalendar(2007, 0, 1, 0, 0, 0);
long minutes = (cal.getTimeInMillis() - startOfTheYear.getTimeInMillis()) / 60000;
//práce s periodou, chceme vypočítat řadu
//časových okamžiků s periodou 5 hodin, 5 vteřin
for(int i = 0; i < 5; i++) {
   cal.add(Calendar.HOUR, 5);
   cal.add(Calendar.MINUTE, 50);
   date = cal.getTime();
}
//zobrazení dne v týdnu na frontend
SimpleDateFormat fmt = new SimpleDateFormat("E", new Locale("cs"));
String dayOfWeek = fmt.format(date);
/*
 * Použití Joda Time API
 */
//vytvoření datumu 12.12.2007
DateTime jodaDate = new DateTime().withDate(2007, 12, 12);
//nastavení hodiny v existujícím datumu
jodaDate = jodaDate.withTime(5, 0, 0, 0);
//přičtení 1 měsíce k datu
jodaDate = jodaDate.plusMonths(1);
//kolik minut je to od začátku roku?
DateTime jodaStartOfTheYear = new DateTime(2007, 1, 1, 0, 0, 0, 0);
long jodaMinutes = new Duration(jodaStartOfTheYear, jodaDate).getMillis() / 60000;
//práce s periodou, chceme vypočítat řadu
//časových okamžiků s periodou 5 hodin, 5 vteřin
Period period = new Period(5, 50, 0, 0);
for(int i = 0; i < 5; i++) {
   jodaDate = jodaDate.plus(period);
}
//zobrazení dne v týdnu na frontend
String jodaDayOfWeek = jodaDate.dayOfWeek().getAsText(new Locale("cs"));


// from Joda to JDK
Date jdkDate = new DateTime().toDate();
// from JDK to Joda
DateTime dt = new DateTime(new Date());
// from Joda to JDK
GregorianCalendar jdkGCal = new DateTime().toGregorianCalendar();
// from JDK to Joda
DateTime dt = new DateTime(GregorianCalendar.getInstance());


DateTimeFormatter fmt = new DateTimeFormatterBuilder()
            .appendDayOfMonth(2) //první dva znaky znamenají den v měsíci
            .appendLiteral('-') //pak následuje znak pomlčky
            .appendMonthOfYearShortText() //následuje název měsíce ve zkrácené formě
            .appendLiteral('-') //opět následuje pomlčka
            .appendTwoDigitYear(1956)  //a pak číslo roku v dvoumístném formátu
            //toto konkrétně znamená povolený interval od roku 1906 do roku 2005
            //př. 08 - převede na rok 1908, 03 - převede na rok 2003
            .toFormatter();


DateTimeUtils.setCurrentMillisFixed(new DateTime(2007,12,1,12,0,0).getMillis());


<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>1.5.2</version>
</dependency>