Programmazione:Java/iCal4j

Da WikiSitech.
Vai alla navigazioneVai alla ricerca

La libreria iCal4J permette di gestire i calendari secondo la RFC 2445.
Puoi scaricare la versione aggiornata della libreria da qui.
Quello che segue è un esempio di come verificare quali date appartengono ad un set previsto dalle regole FREQ: import java.text.ParseException; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone;

import net.fortuna.ical4j.model.DateList; import net.fortuna.ical4j.model.DateTime; import net.fortuna.ical4j.model.NumberList; import net.fortuna.ical4j.model.Recur; import net.fortuna.ical4j.model.WeekDayList; import net.fortuna.ical4j.model.parameter.Value; import net.fortuna.ical4j.util.TimeZones;


public class test_iCal4j {

/** * @param args */ public static void main(String[] args) {

// String srcRule = "FREQ=YEARLY;BYMONTH=4;BYDAY=SU;BYSETPOS=3"; // Evento annuale, nel mese di aprile, la 3a domenica del mese // String srcRule = "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"; // Evento settimanale, dal lunedì al venerdì String srcRule = "FREQ=MONTHLY;BYMONTHDAY=-1"; // Evento mensile: ultimo giorno del mese // String srcRule = "FREQ=WEEKLY;BYDAY=MO;INTERVAL=2"; // Evento bimensile: ogni lunedì try {

// Istanzia l'oggetto per il parse delle recursioni Recur r = new Recur(srcRule);

System.out.println(r.getFrequency()); // Visualizza la frequenza

WeekDayList wList = r.getDayList(); // Estrae l'elenco dei giorni System.out.println(wList);

NumberList nList = r.getMonthDayList(); // Il giorno del mese (1 = primo del mese, -1 = ultimo del mese) System.out.println(nList);

// Data di inizio periodo Calendar queryStartDate = new

               GregorianCalendar(TimeZone.getTimeZone(TimeZones.UTC_ID));
               queryStartDate.set(2012, Calendar.FEBRUARY, 1, 0,
               0, 0);
           // Data di fine periodo
           Calendar queryEndDate = new

GregorianCalendar(TimeZone.getTimeZone(TimeZones.UTC_ID)); queryEndDate.set(2012, Calendar.MAY, 31, 23, 59, 0);

// // Questa chiamata estrae l'elenco delle date nel periodo compatibili con la regola di recursione imposta // dateList2 viene valorizzato con le date valide

           DateList dateList2 = r.getDates(new DateTime(queryStartDate.getTime())
           							  , new DateTime(queryEndDate.getTime())
           							  , Value.DATE);
           System.out.println(dateList2);

} catch (ParseException e) { System.out.println("ERRORE!! Parsing della stringa [" + srcRule + "]"); e.printStackTrace(); }

}

}