4月21日 15更新   加了注释, 只留下导入的代码了(解析ICS)

因项目需要,这几天写了个日历导入导出代码 (ICS文件)

与大家探讨探讨;

转载 请注明出处  liveTea http://www.cnblogs.com/zhegebucuo

Code
Test 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文件相关推荐

  1. lut及3D LUT Mac调色预设如何导入并应用?关于fcpx/PR/AE/PS/LR/达芬奇lut预设导入及使用方法完整版介绍!

    lut预设是很多设计师用来编辑视频后期色调和图像调色的插件,通过使用LUT可以迅速达到很好的胶片质感和色彩,在此基础上稍作调整就能呈现很赞的色彩风格,lut预设格式为.cube.那么lut预设怎么用? ...

  2. .proto 文件转成 lua 文件完整版(Windows 下)

    .proto 文件转成 .lua 文件完整版(Windows 下) 版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/qq_ ...

  3. iText5实现Java生成PDF文件完整版,二维码

    iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...

  4. 达梦数据库,dimp导入报错:该工具不能解析此文件,请使用更高版本的工具

    经常有朋友反馈达梦数据库,dimp导入报错:该工具不能解析此文件,请使用更高版本的工具 这种问题一般有两种情况: 1.用oracle等异构数据库导出的dmp文件来进行导入,这个是不支持的,建议用数据迁 ...

  5. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  6. java 李炎恢_李炎恢 jquery 66讲视频教程PDF文件完整版全集

    [实例简介] 李炎恢老师在线教程66讲所用的PDF笔记课件,共16章.使用本文档可以省去记笔记的过程. 分享给大家,希望对大家有用. [实例截图] [核心代码] faae1ed4-23fe-4919- ...

  7. vs2017、C++、循环遍历数组完成写XML文件 完整版

    新手小白,请多多指教哦! 这篇文章就是写XML文件的完整版啦.上一篇文章是我在完成整个程序遇到的问题和解决办法. 文章目的:循环遍历vector数组,完成写XML文件 之前的两篇文章写了读取XML文件 ...

  8. 【c语言】通讯录【动态完整版有排序和文件操作】

    一.通讯录是什么 二.通讯录的实现 一.通讯录是什么 通讯录 1.我假设这个通讯录能够存放每个学生的信息 每个人信息:名字+年龄+性别+电话+地址 我的目的是创建通讯录.实现对应功能,为了数据持久化放 ...

  9. bochs镜像java模拟器_【 bochs win7镜像完整版 】bochs win7镜像完整版(bochs win7 img文件)新版下载 - U大师...

    软件介绍 bochs win7镜像iso文件好玩的地方就是可以在手机上运行win系统,理论上只要手机性能更强大,能够成功安装这么大文件的虚拟机,并且能够正常使用,接下来就是你随意测试的时间了. 使用教 ...

最新文章

  1. matlab 实例均命名为,MATLAB复习题
  2. pycharm专业版使用jupyter notebook并且进行调试
  3. 网络营销——网络营销专员到底是教你如何选择网站页面制作
  4. 学javascript 必须了解 typeof 和 instanceof
  5. android调用oncreate,Android - 每次启动时都会调用onCreate
  6. idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台
  7. MyCat分布式数据库集群架构工作笔记0013---高可用_Mycat双主双从复制配置上
  8. spark-dataframe与rdd的区别
  9. python_求1-2+3-4+......-100的值
  10. linux系统分区磁盘,Linux 操作系统手动磁盘分区详细说明
  11. 围棋知名AI-KataGo 下载分享
  12. android网易课堂app,网易云课堂
  13. 【京东电商网站主界面仿写——HTML第七部分】
  14. 个人如何申请注册公司邮箱?企业邮箱注册申请流程详解
  15. 【黄啊码】PHP配合微信公众号生成推广二维码
  16. 阿里云实时计算产品经理李佳林:基于 Flink 构建大规模风控系统的技术实战
  17. oracle vba 数组_vba 数据库目录
  18. 8大模块、40个思维模型,打破思维桎梏,满足你工作不同阶段、场景的思维需求,赶紧收藏慢慢学
  19. NLP预处理——编码、繁转简、停用词、表情、标签
  20. ERC20智能合约的approve千万别这样写

热门文章

  1. 区块链金融格局再生变:谁也没想到韭菜财经会成为一匹黑马
  2. Kaggle HousePrice : LB 0.11666(前15%), 用搭积木的方式(2.实践-特征工程部分)...
  3. 【收音机】 - 龙卷风 - http://www.cradio.cn/download.htm
  4. 对口单招计算机电工试题答案,对口单招电子电工专业综合理论试卷及答案.doc...
  5. Android兼容性小总结(一)
  6. Lintcode 738.Count Different Palindromic Subsequences go
  7. 【python 可视化】数据透视表的用法及画饼图
  8. 简述配置php运行环境的大致步骤,简述手工安装、配置PHP运行环境的大致步骤。...
  9. 闭环检测数据集_闭环:收集配置管理数据的秘诀
  10. POS机龙头联迪:一款产品的质量事故引发的数据化探索之路