【问题标题】:Windows Phone 7 - iCal Generator - C#Windows Phone 7 - iCal 生成器 - C#
【发布时间】:2011-10-13 08:27:35
【问题描述】:

我需要从设备获取的约会中生成 iCal 字符串。 Windows Phone 7 上是否有任何库支持从约会中生成 iCal?

我尝试了DDay.iCal,但它不适用于 Windows Phone 7。

【问题讨论】:

    标签: c# windows-phone-7 icalendar


    【解决方案1】:

    我没有遇到过专门针对 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 个字符插入一个换行符/空格。

    祝你好运,玩得开心! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2011-08-31
      相关资源
      最近更新 更多