2011-02-08 1 views
3

최소한의 데이터로 icalendar 파일을 만들려면 어떻게해야합니까? 다음과 같이 만들려고하지만 Google 캘린더로 가져 오기를 시도 할 때 이벤트가 성공적으로 가져 왔지만 캘린더에 해당 이벤트가 표시되지 않습니다.프로그래밍 방식으로 .ics 파일을 만드는 방법은 무엇입니까?

이 Google 캘린더 가져 올 때

Private Sub WriteCalendar(ByVal data As String) 
    Dim response As HttpResponse = Page.Response 
    response.Clear() 
    response.Buffer = True 
    response.ContentType = "text/calendar" 
    response.ContentEncoding = Encoding.UTF8 
    response.Charset = "utf-8" 
    response.AddHeader("Content-Disposition", "attachment;filename=""" & "icalendarTest" & ".ics""") 
    response.Write(data) 
    response.[End]() 
End Sub 

내가 파일을 다운로드 및 이벤트를 볼 수 있지만 다음과 같이

strResult.Append("BEGIN:VCALENDAR" & vbCrLf)   

    strResult.Append("VERSION:2.0" & vbCrLf) 

    strResult.Append("METHOD:PUBLISH" & vbCrLf) 

    While rst1.Read 
     strResult.Append("BEGIN:VEVENT" & vbCrLf) 

     strResult.Append("DTSTART: " & CDate(getLeave_date_start(CStr(rst1.getInteger("inq_id")), g_dom_id)).ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf)  

     strResult.Append("DTEND: " & CDate(getLeave_date_end(CStr(rst1.getInteger("inq_id")), g_dom_id)).ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf) 

     strResult.Append("SUMMARY: " & rst1.getString("inq_name") & vbCrLf) 

     strResult.Append("UID: " & rst1.getInteger("inq_id") & vbCrLf) 

     strResult.Append("CLASS:PUBLIC" & vbCrLf) 

     strResult.Append("END:VEVENT" & vbCrLf) 

    End While 
    strResult.Append("END:VCALENDAR" & vbCrLf) 

    WriteCalendar(strResult) 

내가 함수 WriteCalendar를 썼다는 6 이벤트가 성공적으로 가져라고하지만 난 그들에 볼 수 없습니다 나의 달력

내가 .ics 인 모든 태그를 포함하지 않았다

출력 icalendarTest.ics

BEGIN:VCALENDAR 
VERSION:2.0 
METHOD:PUBLISH 
BEGIN:VEVENT 
DTSTART: 20110107T060000Z 
DTEND: 20110109T080000Z 
SUMMARY: ayin yedisinden dokuzuna 
UID: 9 
CLASS:PUBLIC 
END:VEVENT 
BEGIN:VEVENT 
DTSTART: 20110119T103000Z 
DTEND: 20110119T150000Z 
SUMMARY: tek gunluk ondokuz 
UID: 10 
CLASS:PUBLIC 
END:VEVENT 
BEGIN:VEVENT 
DTSTART: 20110213T080000Z 
DTEND: 20110213T160000Z 
SUMMARY: Mijn Event 
UID: 21 
CLASS:PUBLIC 
END:VEVENT 
BEGIN:VEVENT 
DTSTART: 20110301T083000Z 
DTEND: 20110302T110000Z 
SUMMARY: Mart kapidan baktirir 
UID: 26 
CLASS:PUBLIC 
END:VEVENT 
BEGIN:VEVENT 
DTSTART: 20110117T080000Z 
DTEND: 20110117T120000Z 
SUMMARY: Neyse bi oncesi olsun 
UID: 27 
CLASS:PUBLIC 
END:VEVENT 
BEGIN:VEVENT 
DTSTART: 20110121T130000Z 
DTEND: 20110121T180000Z 
SUMMARY: ocak 21i 
UID: 31 
CLASS:PUBLIC 
END:VEVENT 
END:VCALENDAR 
+1

한 메모를 작동 같이 UID (모든 은하을 고려) 전체 우주에서 고유해야합니다. 이 정수에 대한 정수가 매우 적합하지 않습니다. –

+0

내 이벤트가 표시되지 않는 이유는 무엇입니까? – wallace740

+0

나는 UID하지만 동일한 결과, 수입 성공적인로 GUID로 다른 하나를 만들었지 만 달력에 표시에는 이벤트가 시작되지 : VCALENDAR에게 버전 : 2.0 방법을 : 시작 게시 : VEVENT에게 DTSTART을 : 20110114T230000Z DTEND : 20110114T230000Z 요약 : 사용자 정의 휴가를 UID : 01c09e35-0bf4-4765-8489-5a07b6f3e49e CLASS : PUBLIC END : VEVENT 시작 : VEVENT에게 DTSTART을 : 20110429T220000Z DTEND : 20110506T220000Z 요약 : 메이 vakantie UID : bd3aa376-8743-4aaa-b486-c91f38aae540 수업 : 공개 종료 : VEVENT END : VCALENDAR – wallace740

답변

3

이 오류의 이유를 이잖아.

Google 캘린더에서 내 캘린더를 추출하고 누락 된 데이터를 포함 시켰지만 이제는 작동합니다. uncesessary 것을 나는 발견하지만 DTSTAMP이 필요한 것 같다,하지만 좋은만큼이

strResult.Append("BEGIN:VCALENDAR" & vbCrLf) 
    strResult.Append("PRODID:-//Google Inc//Google Calendar 70.9054//EN" & vbCrLf) 
    strResult.Append("VERSION:2.0" & vbCrLf) 
    strResult.Append("METHOD:PUBLISH" & vbCrLf) 

    While rst1.Read 
     strResult.Append("BEGIN:VEVENT" & vbCrLf) 
     strResult.Append("DTSTART:" & rst1.getDateTime("hly_startdate").ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf) 
     strResult.Append("DTEND:" & rst1.getDateTime("hly_enddate").ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf) 
     strResult.Append("DTSTAMP:" & rst1.getDateTime("hly_date_created").ToUniversalTime().ToString("yyyyMMddTHHmmssZ") & vbCrLf) 
     strResult.Append("SEQUENCE:0" & vbCrLf) 
     strResult.Append("STATUS:CONFIRMED" & vbCrLf) 
     strResult.Append("SUMMARY:" & rst1.getString("hly_name") & vbCrLf) 
     strResult.Append("UID:" & System.Guid.NewGuid.ToString() & vbCrLf) 
     strResult.Append("CLASS:PUBLIC" & vbCrLf) 
     strResult.Append("TRANSP:OPAQUE" & vbCrLf) 
     strResult.Append("END:VEVENT" & vbCrLf) 

    End While 
    strResult.Append("END:VCALENDAR" & vbCrLf) 
+0

'SEQUENCE : 0'은 공백이 없어야합니다. 이것을 "SEQUENCE : 0"이라고 쓰면 틀린 것입니다. – wallace740

+0

'SEQUENCE'와'DTSTAMP'를 바꾸더라도'METHOD : PUBLISH'를 사용하여 기존 캘린더 아이템을 업데이트 할 수 없다는 것을 알았습니까? –