将约会转换为日历窗口8.1 c#

时间:2014-09-08 08:46:09

标签: c# windows-runtime icalendar appointment

在Windows 8.1中,日历管理使用Windows.ApplicationModel.Appointments命名空间。

我试图理解它,它很容易管理。

我能做到:
- 创建日历
- 查看设备上的日历
- 创建活动

这很简单;

我想要的是知道如何从Windows.ApplicationModel.Appointments.Appointment()对象转换为Icalendar对象。这样我就可以在不同的应用程序上操作事件了吗?

我的计划如下:

创建约会 - >将其序列化为json字符串 - >将此json字符串转换为Icalendar json字符串 - >将此json对象发送到不同的应用程序或Web服务。

我可以在Windows 8.1上提取约会的json对象,它具有以下结构:

{
    "RoamingId": "",
    "ReplyTime": null,
    "OnlineMeetingLink": "",
    "IsResponseRequested": true,
    "IsOrganizedByUser": false,
    "IsCanceledMeeting": false,
    "AllowNewTimeProposal": true,
    "UserResponse": 0,
    "CalendarId": "",
    "HasInvitees": false,
    "LocalId": "",
    "OriginalStartTime": null,
    "Sensitivity": 0,
    "Reminder": null,
    "Recurrence": {
        "WeekOfMonth": 0,
        "Until": null,
        "Unit": 3,
        "Occurrences": 6,
        "Month": 1,
        "Interval": 3,
        "DaysOfWeek": 32,
        "Day": 1,
        "TimeZone": "",
        "RecurrenceType": 0
    },
    "Organizer": null,
    "Location": "",
    "Duration": "00:00:00",
    "Details": "",
    "BusyStatus": 0,
    "AllDay": false,
    "StartTime": "2014-09-08T08:08:00+03:00",
    "Uri": null,
    "Subject": "this",
    "Invitees": {

    }
}

然而,Icalendar结构如下:

BEGIN:VCALENDAR
PRODID:-//Test Productions //Test Event//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
SUMMARY:Test Event
DESCRIPTION:Description of Test Event
DTSTART:20140825T100000Z
DTEND:20140831T110000Z
RRULE:FREQ=DAILY;UNTIL=20141231T060000Z
LOCATION:Planer Earth
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:EMAIL
END:VALARM
END:VEVENT
END:VCALENDAR

所以它们不容易匹配。 !

我的问题是:

Windows 8.1 API中是否有内置功能可以直接为我提供Icalendar对象?

如果没有那么:是否有任何第三方图书馆(首选开源)为我这样做?

如果没有,那么我必须自己创建并创建自己的库(对吗?)
我不想重新发明轮子!

1 个答案:

答案 0 :(得分:0)

Windows.ApplicationModel.Appointments不会说Icalendar。

我唯一知道的icalendar的唯一.net库是dday ical。我不知道推荐它。该论坛仍然存在,但代码似乎没有得到积极维护,我看到承认performance problems,我不确定是否已得到解决。在任何情况下,它都不知道新的Windows.ApplicationModel.Appointments命名空间。

我没有看到使用Json的意义。 Icalendar是一种相当简单的格式,根据您的要求,您应该能够使用字符串方法直接从约会编写Icalendars的生成。