Domanda

Sto utilizzando l'implementazione RFC2445 di Google ( http://code.google. com / p / google-rfc-2445 / ) per le regole di ricorrenza. Se definisco una ricorrenza MENSILE a partire dal 30 gennaio, i mesi con meno di 30 giorni (cioè febbraio) verranno totalmente ignorati. Quindi l'API di Google restituirà il 30 gennaio, il 30 marzo, il 30 aprile, ecc. Non va bene. Mi aspetto che ritorni: 30 gennaio, 28 febbraio, 30 marzo, 30 aprile.

Allo stesso modo, se avessi scelto una data di inizio il 31 gennaio, i mesi con meno di 31 giorni sarebbero stati saltati.

Questo potrebbe essere corretto secondo le specifiche RFC2445 o potrebbe essere un bug. Cosa ne pensi?

La mia domanda principale è: esiste un modo per definire una regola che dice " ricorrere il 30 di ogni mese; o l'ultimo giorno del mese se il 30esimo non esiste " ;. Non credo ci sia. Qualche suggerimento?

Grazie in anticipo.

Saluti, Cormac

È stato utile?

Soluzione

La risposta è: FREQ = MENSILE; BYMONTHDAY = 28,29,30; BYSETPOS = -1 che si traduce in " ricorrere il 30 di ogni mese; o l'ultimo giorno del mese se il 30esimo non esiste " ;.

Altri suggerimenti

Sembra che tu abbia ragione sull'RFC che salta quelle date. Se il tuo DTSTART è il 31 gennaio e non specifichi un BYMONTHDAY nella tua regola di ricorrenza (o se <=> è il 31), semplicemente ignorerà quella regola nei mesi in cui non esiste tale giorno:

  

Se vengono trovati i valori della parte della regola BYxxx   che vanno oltre lo scopo disponibile   (es. BYMONTHDAY = 30 a febbraio), loro   sono semplicemente ignorati.

Tuttavia , dovresti essere in grado di specificare -1 per <=> e farlo usare l'ultimo giorno del mese, qualunque esso sia.

  

La parte della regola BYMONTHDAY specifica a   Carattere COMMA (ASCII decimale 44)   elenco separato di giorni del mese.   I valori validi sono compresi tra 1 e 31 o tra -31 e -1.   Ad esempio, -10 rappresenta il decimo   fino all'ultimo giorno del mese.

Bene, guardando RFC 2445 sembra proprio che il comportamento che tu ' vedere è corretto:

  

Se vengono rilevati valori della parte della regola BYxxx che vanno oltre l'ambito disponibile (ad es. BYMONTHDAY = 30 a febbraio), vengono semplicemente ignorati.

L'unica soluzione che mi viene in mente è quella di utilizzare più regole di ricorrenza, vale a dire una per il 30 di ogni mese e un'altra per l'ultimo giorno di febbraio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top