El archivo adjunto ical (.ics) funciona para todos los casos, excepto los casos recurrentes semanales y una vez al mes. Estoy tratando de crear una recurrencia semanal para uno de los días laborables y también una recurrencia mensual para el último martes / segundo martes de cada mes. Cuando abro el archivo .ics, dice "La operación falló".

Semanal:

evnt.Start = new CalDateTime(start);
evnt.End = new CalDateTime(new DateTime(evnt.Start.Year, evnt.Start.Month, evnt.Start.Day, end.Hour, end.Minute, end.Second));
rrule = new RecurrencePattern(FrequencyType.Weekly, 1);
rrule.ByDay.Add(new WeekDay(DayOfWeek.Monday));
rrule.Until = end;
evnt.RecurrenceRules = new List<RecurrencePattern> { rrule };

Mensual:

evnt.Start = new CalDateTime(start);
evnt.End = new CalDateTime(new DateTime(evnt.Start.Year, evnt.Start.Month, evnt.Start.Day, end.Hour, end.Minute, end.Second));
rrule = new RecurrencePattern(FrequencyType.Monthly,1);
rrule.Until = end;
rrule.ByDay.Add(new WeekDay(DayOfWeek.Sunday,FrequencyOccurrence.FifthToLast));
evnt.RecurrenceRules = new List<RecurrencePattern> { rrule };

Por favor, hágame saber lo que estoy haciendo mal.

0
digitally_inspired 13 abr. 2020 a las 20:38

2 respuestas

La mejor respuesta

Con las señales que recibí de @matis y @anmari, descubrí la causa raíz.

Cuando crea una cita recurrente con un día de la semana específico, tanto la fecha de inicio como la de finalización deben coincidir con el mismo día de la semana. Aquí hay una muestra de trabajo que ocurre el segundo miércoles de cada mes.

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
BEGIN:VEVENT
ATTENDEE;CN="Last, First":mailto:first.last@email.com
CREATED:20200415T164742
DESCRIPTION: Cal Description
DTEND;TZID=Eastern Standard Time:20200513T110000
DTSTAMP:20200415T204742Z
DTSTART;TZID=Eastern Standard Time:20200513T103000
LOCATION:Meeting location
ORGANIZER;CN="user, Admin";SENT-BY="mailto:admin.user@email.com":
RRULE:FREQ=MONTHLY;COUNT=13;BYDAY=2WE
SEQUENCE:0
SUMMARY:Title
UID:1913d514-696e-4237-bc3c-c1d073eacced
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Reminder
TRIGGER:-PT15M
END:VALARM
END:VEVENT
END:VCALENDAR
0
digitally_inspired 16 abr. 2020 a las 13:35

¿Podría proporcionarnos los datos de iCalendar que generará su código? Y posiblemente nos muestre qué son start y end.

Estoy tratando de crear una recurrencia semanal para uno de los días laborables

Para esto, los datos de iCalendar deberían verse así:

FREQ=WEEKLY;BYDAY=MO;INTERVAL=1;UNTIL=20200515T220000Z

Elegí el lunes como el día y fijé una fecha de finalización un mes antes, ya que usted también proporcionó algún final.


Estoy tratando de crear una recurrencia mensual para el último martes / segundo martes de cada mes.

Como @anmari señaló, tiene un domingo en su código pero quiere un martes recurrente.

Para esto, el iCalendar debería verse así:

FREQ=MONTHLY;BYDAY=2TU,-1TU;INTERVAL=1;UNTIL=20200515T220000Z

O incluso así (con BYSETPOS):

FREQ=MONTHLY;BYSETPOS=2,-1;BYDAY=TU;INTERVAL=1;UNTIL=20200515T220000Z
1
Matis 15 abr. 2020 a las 12:44