Ich speichere einen Termin zu einem AppointmentCalendar
mit AppointmentCalendar.SaveAppointmentAsync(...)
. Dieser Termin ist der Master einer Serie mit Recurrence
Informationen.Warum ist `Appointment.Recurrence.Until` (unerwartet) um eins nach dem Speichern und Laden?
Gleich nach dem Speichern des Termins ich den gleichen Termin wieder abrufen, indem Sie GetAppointmentAsync
auf dem gleichen Kalender mit dem Termin LocalId
aufrufen.
Hier ist das unerwartete Verhalten: Es gibt einen Unterschied in der geladenen Termin: Recurrence.Until
Datum ist aus durch eine. Warum ist das?
Hier sind die beteiligten Termine als JSON serialisiert:
Die Appointment
ich sparen:
{
"Location": "",
"AllDay": false,
"Organizer": null,
"Duration": "00:45:00",
"Details": "",
"BusyStatus": 0,
"Recurrence": {
"Unit": 1,
"Occurrences": 260,
"Month": 1,
"Interval": 1,
"DaysOfWeek": 62,
"Day": 1,
"WeekOfMonth": 0,
"Until": "2016-12-31T01:00:00+01:00",
"TimeZone": "Europe/Budapest",
"RecurrenceType": 0,
"CalendarIdentifier": ""
},
"Subject": "test",
"Uri": null,
"StartTime": "2016-01-04T11:30:00+01:00",
"Sensitivity": 0,
"Reminder": null,
"Invitees": {},
"AllowNewTimeProposal": true,
"UserResponse": 0,
"RoamingId": "c,b,fd",
"ReplyTime": null,
"IsResponseRequested": true,
"IsOrganizedByUser": false,
"IsCanceledMeeting": false,
"OnlineMeetingLink": "",
"HasInvitees": false,
"CalendarId": "b,37,355",
"LocalId": "c,37,20a3",
"OriginalStartTime": null,
"RemoteChangeNumber": 0,
"DetailsKind": 0,
"ChangeNumber": 39537577
}
Und hier ist genau diese Appointment
, nachdem es das Abrufen von GetAppointmentAsync
Aufruf:
{
"Location": "",
"AllDay": false,
"Organizer": null,
"Duration": "00:45:00",
"Details": "",
"BusyStatus": 0,
"Recurrence": {
"Unit": 1,
"Occurrences": 260,
"Month": 1,
"Interval": 1,
"DaysOfWeek": 62,
"Day": 1,
"WeekOfMonth": 0,
"Until": "2016-12-30T01:00:00+01:00",
"TimeZone": "Europe/Budapest",
"RecurrenceType": 0,
"CalendarIdentifier": "GregorianCalendar"
},
"Subject": "test",
"Uri": null,
"StartTime": "2016-01-04T11:30:00+01:00",
"Sensitivity": 0,
"Reminder": null,
"Invitees": {},
"AllowNewTimeProposal": true,
"UserResponse": 0,
"RoamingId": "c,b,fd",
"ReplyTime": null,
"IsResponseRequested": true,
"IsOrganizedByUser": false,
"IsCanceledMeeting": false,
"OnlineMeetingLink": "",
"HasInvitees": false,
"CalendarId": "b,37,355",
"LocalId": "c,37,20a3",
"OriginalStartTime": null,
"RemoteChangeNumber": 0,
"DetailsKind": 0,
"ChangeNumber": 39537577
}
Wenn Sie diese JSONs umgehen, erhalten Sie zwei Unterschiede im Recurrence
Teil:
CalendarIdentifier
ist im ursprünglichen Termin leer, um zu speichern (weil der Setter privat ist). Aber noch wichtiger: Recurrence.Until
unterscheidet sich!
Recurrence.Until
für Termin zu speichern: "2016-12-31T01: 00: 00 + 01: 00"
Recurrence.Until
Termin nach dem Laden: "2016-12-30T01: 00: 00 + 01: 00"
Ein Tag fehlt.
Warum ist das? Gibt es noch etwas, das ich beim Speichern des Termins tun muss? Oder schlimmer: Ist es nur ein Randfall mit meinen Kalendern und Terminen, vielleicht sogar mit dem aktuellen Datum verbunden?
(SDK Version 10.0.14393.0, Win 10 Anniversary)
Sehr geehrte @Sunteen, danke für den Blick in diese! Leider kann ich keine Benutzeroberfläche verwenden, um Termine zu erstellen, da ich Termine intern sichern möchte. Und das muss eine 1: 1 Sicherung sein, also muss ich "Termin" Objekte mit all seinen Eigenschaften duplizieren. Aus Ihrer Antwort sehe ich, dass ich mit den Zeitzonen der Termine experimentieren könnte, um dahin zu kommen, wo ich will. Aber sieht das ganze Verhalten nicht wie ein Fehler oder zumindest nicht intuitives Verhalten aus? –