Ich erstelle ein .ics Dokument mit iCal.Net.Warum generiert iCal.Net eine ungültige Zeit?
Event calendarEvent = new Event
{
IsAllDay = false,
Summary = "summary",
Description = "summary",
DtStart = new CalDateTime(TimeZoneInfo.ConvertTimeFromUtc(start,TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")), "America/New_York"),
DtEnd = new CalDateTime(TimeZoneInfo.ConvertTimeFromUtc(end, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")), "America/New_York")
};
var calendar = new Calendar();
calendar.AddTimeZone(new VTimeZone("America/New_York"));
calendar.Events.Add(calendarEvent);
var serializer = new CalendarSerializer(new SerializationContext());
return serializer.SerializeToString(calendar);
Üblicherweise wird der resultierende Start- und Enddatum ähnlich aussehen wie diese:
DTEND;TZID=America/New_York:20170106T132000
DTSTAMP:20170104T005548Z
DTSTART;TZID=America/New_York:20170106T130000
Sie werden jedoch wie dies gelegentlich generiert:
DTEND;TZID=America/New_York:20180105T002000
DTSTAMP:20170105T191635Z
DTSTART;TZID=America/New_York;VALUE=DATE:20180105
Insbesondere beachten Sie die VALUE=DATE:20180105
nächste zu DTSTART
. Aus welchem Grund auch immer, dies bewirkt, dass die meisten Kalenderanwendungen das Ereignis als ganztägiges Ereignis lesen (obwohl, wie Sie oben sehen können, ich ausdrücklich sage, dass dies nicht der Fall ist).
Was ist los?
EDIT:
Die Startdaten sind 1. Juni 2017, 01.00 Uhr für das erste Beispiel, und 1. Mai 2018, 00.00 Uhr für die zweiten. Ich denke, dass es etwas mit der Tatsache zu tun, dass in der zweiten Datumzeit, die Zeit ist der Standardwert
Nun, was ist der Wert von "Start" in diesen Fällen? –
Sorry, hinzugefügt, dass Informationen zu der Problemstellung –