Differenze tra le versioni di "Programmazione:Java/iCal4j"
| Riga 10: | Riga 10: | ||
import net.fortuna.ical4j.model.DateList;  | import net.fortuna.ical4j.model.DateList;  | ||
import net.fortuna.ical4j.model.DateTime;  | import net.fortuna.ical4j.model.DateTime;  | ||
| + | import net.fortuna.ical4j.model.NumberList;  | ||
import net.fortuna.ical4j.model.Recur;  | import net.fortuna.ical4j.model.Recur;  | ||
| + | import net.fortuna.ical4j.model.WeekDayList;  | ||
import net.fortuna.ical4j.model.parameter.Value;  | import net.fortuna.ical4j.model.parameter.Value;  | ||
import net.fortuna.ical4j.util.TimeZones;  | import net.fortuna.ical4j.util.TimeZones;  | ||
| Riga 24: | Riga 26: | ||
//		String srcRule = "FREQ=YEARLY;BYMONTH=4;BYDAY=SU;BYSETPOS=3";		// Evento annuale, nel mese di aprile, la 3a domenica del mese  | //		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=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 {  | 		try {  | ||
| Riga 31: | Riga 33: | ||
			Recur r = new Recur(srcRule);  | 			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  | 			// Data di inizio periodo  | ||
	        Calendar queryStartDate = new  | 	        Calendar queryStartDate = new  | ||
Versione delle 23:17, 20 nov 2012
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();
		}
	}
}