Introduzione ai modelli di ricorrenza
Puoi considerare un modello di ricorrenza come un modo per descrivere un calendario specifico. Contiene appena le informazioni necessarie per costruire un elenco di occorrenze (date e orari) secondo un determinato programma. Un modello di ricorrenza può contenere regole di ricorrenza che descrivono cicli che si combinano per formare il modello complessivo. In generale, più è complesso un modello di ricorrenza, più regole di ricorrenza conterrà. I modelli di ricorrenza possono includere eccezioni (da non confondere con le eccezioni che rappresentano errori che si verificano durante l’esecuzione dell’applicazione). Le eccezioni aggiungono o rimuovono date di occorrenza dal modello originale. Le eccezioni possono essere specificate come occorrenze esplicite o come un modello a sé stante. Esempi di modelli di ricorrenza con eccezioni:
- Ogni secondo venerdì, eccetto da giugno a agosto.
- Il primo di ogni mese, eccetto gennaio, quando dovrebbe essere il 2.
I modelli di ricorrenza sono più spesso periodici, ma non devono esserlo. Un modello di ricorrenza può essere descritto completamente semplicemente come un insieme di date e orari di occorrenza predefiniti. L’RFC iCalendar definisce componenti, come VEVENT o VTODO, che rappresentano eventi o attività. Le componenti possono avere proprietà come data/ora di inizio, descrizione, posizione, partecipanti e ricorrenza. Un modello di ricorrenza, quindi, esiste normalmente come proprietà di un’attività ricorrente o di un evento. Le proprietà del modello di ricorrenza definite da iCalendar sono:
- DTSTART - la data e ora di inizio del modello (rappresenta anche la prima occorrenza se non esclusa esplicitamente).
- RRULE - specifica una regola di ripetizione per un insieme di ricorrenze.
- RDATE - definisce un elenco di date e orari da includere in un insieme di ricorrenze.
- EXRULE - specifica una regola di ripetizione per le eccezioni da un insieme di ricorrenze.
- EXDATE - definisce un elenco di eccezioni di data e ora da un insieme di ricorrenze.
Solo DTSTART è obbligatorio e deve esserci un solo DTSTART. Tutte le altre proprietà sono opzionali e possono essere specificate più volte. Aspose.iCalendar prende una stringa in formato iCalendar e legge il modello di ricorrenza in un RecurrencePattern oggetto. La stringa può essere una descrizione completa di un componente iCalendar (ad esempio, un VEVENT completo) oppure può essere solo un frammento che contiene solo il modello di ricorrenza. Una volta caricato il modello di ricorrenza in un oggetto RecurrencePattern, è possibile:
- Esamina e modifica il modello programmaticamente tramite i metodi e le proprietà forniti da Aspose.iCalendar
- Genera date/ora delle occorrenze in un intervallo di date specificato.
- Salva il modello in formato iCalendar.
Il seguente frammento di codice mostra la parte RRULE che contiene la regola di ricorrenza.
Guarda il esempi di modelli di ricorrenza per illustrazioni su come creare modelli di ricorrenza.
Informazioni sul modello Oggetto Aspose.iCalendar
Lo spazio dei nomi Aspose.iCalendar contiene tutte le classi fornite dal componente Aspose.iCalendar. RecurrencePattern e RecurrenceRule sono le classi centrali di Aspose.iCalendar e forniscono implementazioni concrete degli elementi corrispondenti dell’RFC 2445.
La classe RecurrencePattern rappresenta l’intero modello di ricorrenza. Puoi creare un nuovo modello di ricorrenza da zero usando il costruttore predefinito o caricare un modello esistente in formato iCalendar tramite il metodo statico FromiCalendar. La classe RecurrenceRule rappresenta la parte RRULE o EXRULE di un modello di ricorrenza. RecurrenceRule espone numerose proprietà che corrispondono direttamente alle controparti nello standard iCalendar. Ad esempio, ByMonth corrisponde a BYMONTH in iCalendar e così via. Esaminando o impostando i valori delle proprietà di RecurrenceRule puoi analizzare o modificare una regola di ricorrenza. Per ulteriori informazioni e esempi di codice, vedi RecurrencePattern e RecurrenceRule nella Riferimento API.
Esempi di Modelli
Questa sezione include i seguenti argomenti:
- L’Ultimo Giorno del Mese.
- L’Ultimo Giorno Lavorativo di Ogni Mese.
- L’Ultimo Lunedì dell’Anno.
- Venerdì della Prima Settimana ISO 8601 dell’Anno.
- Primo Venerdì dell’Anno.
L’Ultimo Giorno del Mese
Questi esempi modello di ricorrenza specifica l’ultimo giorno del mese, ogni mese.
RRULE:FREQ=MONTHLY;BYMONTHDAY=-1
Allo stesso modo, se desideri un’occorrenza in un giorno prima dell’ultimo giorno del mese, usa BYMONTHDAY=-2. Se specifichi BYMONTHDAY=31, secondo lo standard iCalendar, non verrà generata alcuna occorrenza nei mesi che hanno meno di 31 giorni.
L’Ultimo Giorno Lavorativo di Ogni Mese
Questi esempi modello di ricorrenza specifica l’ultimo giorno lavorativo del mese, ogni mese. I giorni lavorativi sono definiti come i giorni in cui si lavora. In Europa, per esempio, i giorni lavorativi sono normalmente da lunedì a venerdì.
RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
La regola sopra specifica tutti i giorni lavorativi di un mese e ne seleziona l’ultimo. Il risultato è l’ultimo giorno lavorativo di un mese.
L’Ultimo Lunedì dell’Anno
Questo esempio modello di ricorrenza specifica un evento che si verifica l’ultimo lunedì dell’anno.
RRULE:FREQ=YEARLY;BYDAY=-1MO
Venerdì della Prima Settimana ISO 8601 dell’Anno
Questo esempio modello di ricorrenza specifica il venerdì della prima settimana dell’anno. Nella specifica ISO 8601, la prima settimana dell’anno è quella che contiene almeno quattro giorni. Quando un anno inizia di sabato, per esempio, la settimana 1 è la settimana immediatamente successiva, che inizia lunedì 3 gennaio.
FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR
Primo Venerdì dell’Anno
Questo esempio modello di ricorrenza specifica un evento che si verifica il primo venerdì dell’anno.
FREQ=YEARLY;BYDAY=1FR
Nel 1999, per esempio, il primo venerdì dell’anno è il 1999/01/01, mentre il venerdì della prima settimana ISO 8601 è il 1999/01/08.