导入日历 ICS文件 完整版(原创)---解析icS文件
生活随笔
收集整理的這篇文章主要介紹了
导入日历 ICS文件 完整版(原创)---解析icS文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
???
4月21日 15更新???加了注釋, 只留下導入的代碼了(解析ICS)?
?
因項目需要,這幾天寫了個日歷導入導出代碼 (ICS文件)
?
與大家探討探討;
?
轉載 請注明出處? liveTea http://www.cnblogs.com/zhegebucuo
?
?
?
CodeTest?and?please?not?to?delete.#region?Test?and?please?not?to?delete.?
????????public?override?void?VerifyRenderingInServerForm(Control?control)
????????{
????????????//base.VerifyRenderingInServerForm(control);
????????}
????????private?ArrayList?calendarResult?=?new?ArrayList();//?結果
????????private?ScheduleEntity?seResult?=?new?ScheduleEntity();//日歷實體,包括提醒實體,提醒是多重的??所以是個list
?
??????//解析日歷格式?時間
????????private?DateTime?getDateTime(string?tmp)
????????{
????????????//20090406T235959000Z
????????????string?value?=?"";
????????????value?=?tmp.Substring(0,?4)?+?"-"?+?tmp.Substring(4,?2)?+?"-"?+?tmp.Substring(6,?2)?+?"?"?+
????????????????tmp.Substring(9,?2)?+?":"?+?tmp.Substring(11,?2);
????????????return?Convert.ToDateTime(value);
????????}
????????private?List<RemindParamEntity>?awokeList?=new?List<RemindParamEntity>();
????????private?RemindParamEntity?RemindParam?=?new?RemindParamEntity();
????????private?void?caseCalendar(string?tmp,string?value?)
????????{
????????????if?(tmp?==?"BEGIN")
????????????{
????????????????alarmBegin?=?true;
????????????????RemindParam?=?new?RemindParamEntity();
????????????????return;
????????????}
????????????else?if?(tmp?==?"END")
????????????{
????????????????awokeList.Add(RemindParam);
????????????????alarmBegin?=?false;
????????????????return;
????????????}
????????????if?(alarmBegin)
????????????{
????????????????switch?(tmp)
????????????????{
????????????????????case?"ACTION":
????????????????????????RemindParam.NeedRemind?=?1;
????????????????????????break;
????????????????????case?"TRIGGER":
????????????????????????RemindParam.TimeValue?=?1;
????????????????????????break;
????????????????????default:
????????????????????????
????????????????????????break;
????????????????}
????????????}
????????????else
????????????{
????????????????switch?(tmp)
????????????????{
????????????????????case?"DTSTART":
????????????????????????seResult.BeginTime?=?getDateTime(value);
????????????????????????break;
????????????????????case?"DTEND":
????????????????????????seResult.EndTime?=?getDateTime(value);
????????????????????????break;
????????????????????case?"DTSTAMP":
????????????????????????//?seResult.CreateTime?=?getDateTime(value);
????????????????????????;
????????????????????????break;
????????????????????case?"UID":
????????????????????????//seResult.ScheduleID?=?1;
????????????????????????;
????????????????????????break;
????????????????????case?"CLASS":
????????????????????????seResult.ScheduleTypeSet?=?value;
????????????????????????break;
????????????????????case?"CREATED":
????????????????????????seResult.CreateTime?=?getDateTime(value);
????????????????????????break;
????????????????????case?"DESCRIPTION":
????????????????????????seResult.Brief?=?value;
????????????????????????break;
????????????????????case?"LAST-MODIFIED":
????????????????????????//seResult.CreateTime?=?getDateTime(value);
????????????????????????;
????????????????????????break;
????????????????????case?"LOCATION":
????????????????????????seResult.Place?=?value;
????????????????????????break;
????????????????????case?"SEQUENCE":
????????????????????????//
????????????????????????;
????????????????????????break;
????????????????????case?"STATUS":
????????????????????????//;
????????????????????????;
????????????????????????break;
????????????????????case?"SUMMARY":
????????????????????????seResult.Summary?=?value;
????????????????????????break;
????????????????????case?"TRANSP":
????????????????????????//;
????????????????????????;
????????????????????????break;
????????????????????default:
????????????????????????;
????????????????????????break;
????????????????}
????????????}
???????????//?return?"";
????????}
????????private?void?caseAlart(string?tmp,?string?value)
????????{
????????}
????????private?ArrayList?calendarArray?=?new?ArrayList();
????????protected?void?Button2_Click(object?sender,?EventArgs?e)
????????{
//拆分成獨立?日歷
????????????string[]?s?=?GetStopWords();
????????????int?sLenth?=?s.Length;
????????????List<string>?singleCalendarList=?new?List<string>();
????????????bool?calendarBegin?=?false;
????????????for?(int?i?=?0;?i?<?sLenth;?i++)
????????????{
????????????????if?(s[i]?==?"BEGIN:VEVENT")
????????????????{
????????????????????calendarBegin?=?true;
????????????????????singleCalendarList=new?List<string>();
????????????????????//singleCalendarList.Clear();
????????????????}
????????????????else?if?(s[i]?==?"END:VEVENT")
????????????????{
????????????????????calendarArray.Add(singleCalendarList);
????????????????????calendarBegin?=?false;
????????????????}
????????????????else?if(calendarBegin)
????????????????{
????????????????????singleCalendarList.Add(s[i]);
????????????????}
????????????????
????????????}
????????????doWork(calendarArray);
????????????
????????}
????????private?void?doWork(ArrayList?a)
????????{
????????????//separate?calendar
?????????????List<string>?calendar?=?new?List<string>();
????????????int?len?=?a.Count;
????????????for?(int?i?=?0;?i?<?len;?i++)
????????????{
????????????????calendar?=?(List<string>)a[i];
????????????????doBusiness(calendar);
????????????}
????????????//to?do?ddataBase
????????}
????????private?void?doBusiness(List<string>?L)
????????{
????????????//seResult?init;
????????????//seResult.BeginTime?=?"";
????????????//List<RemindParamEntity>?RList?=?new?List<RemindParamEntity>();
????????????//RemindParamEntity?RParam?=?new?RemindParamEntity();
????????????//RParam.Place?=?"Test";
???????????//?RList.Add(RParam);
????????????seResult?=?new?ScheduleEntity();
???????????//?seResult.RemindParamList?=?RList;
???????????//?;
????????????//singel?calendar?business
????????????//wokeList?=?true;
????????????foreach(string?calendar?in?L)
????????????{
????????????????string[]?subChild?=?calendar.Split(':');
????????????????//if?(subChild[0]?==?"BEGIN:VALARM")
???????????????//?{
???????????????//?}
????????????????//else
???????????????//?{
????????????????????caseCalendar(subChild[0],?subChild[1]);
???????????????//?}
????????????}
????????????seResult.RemindParamList?=?awokeList;
????????????calendarResult.Add(seResult);
????????????//clear
????????????awokeList?=?new?List<RemindParamEntity>();
????????????//wokeList?=?false;
????????}
????????#endregion
?
?
?
轉載于:https://www.cnblogs.com/zhegebucuo/archive/2009/04/20/1439810.html
總結
以上是生活随笔為你收集整理的导入日历 ICS文件 完整版(原创)---解析icS文件的全部內容,希望文章能夠幫你解決所遇到的問題。