【发布时间】:2011-10-13 08:27:35
【问题描述】:
我需要从设备获取的约会中生成 iCal 字符串。 Windows Phone 7 上是否有任何库支持从约会中生成 iCal?
我尝试了DDay.iCal,但它不适用于 Windows Phone 7。
【问题讨论】:
标签: c# windows-phone-7 icalendar
我需要从设备获取的约会中生成 iCal 字符串。 Windows Phone 7 上是否有任何库支持从约会中生成 iCal?
我尝试了DDay.iCal,但它不适用于 Windows Phone 7。
【问题讨论】:
标签: c# windows-phone-7 icalendar
我没有遇到过专门针对 Windows Phone 7 的库,但是编写自己的类来生成 iCal 文件应该不会太难,因为毕竟 iCal 只是文本。 The RFC is quite a dense read,但是使用一些在线参考like this one 并查看一些示例 iCal 文件应该足以开始使用。以 wikipedia 中的 iCal 文件为例:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
所以请注意您开始和结束一个 VCALENDAR,以及其中的一个 VEVENT,其中包含一些必填字段(如 UID)。唯一需要注意的是,规范要求对超过 75 个八位字节的行进行拆分,因此您可以使用 this stack overflow question 中的此方法处理长文本字段:
Private Function RFC2445TextField(ByVal LongText As String) As String
LongText = LongText.Replace("\", "\\")
LongText = LongText.Replace(";", "\;")
LongText = LongText.Replace(",", "\,")
Dim sBuilder As New StringBuilder
Dim charArray() As Char = LongText.ToCharArray
For i = 1 To charArray.Length
sBuilder.Append(charArray(i - 1))
If i Mod 74 = 0 Then sBuilder.Append(vbCrLf & " ")
Next
Return sBuilder.ToString
End Function
该函数基本上会转义所有必需的转义字符,并每 74 个字符插入一个换行符/空格。
祝你好运,玩得开心! :)
【讨论】: