导出日历(导出ICS文件)(原创)

因一些朋友的需要  我把导出的整理了下 贴上来

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 //导出

private string headerStr = "";
        
private string bodyStr = "";
        
private string tailStr = "";
        
private string enterSprite = "\r\n";
        
protected void Button1_Click(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
            ScheduleEntity[] seTest 
= sm.select_("61b065cb-5192-4980-a207-0cff70725075", DateTime.Parse("2000-1-1"), DateTime.Parse("2010-1-1"));
            
int seLenth = seTest.Length;
            
for (int i = 0; i < seLenth; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
//string t = System.DateTime.Now.Month.ToString();
                bodyStr += "BEGIN:VEVENT" + enterSprite;
                bodyStr 
+= "DTSTART:" + //"20070108T053000Z" + enterSprite;
                    seTest[i].BeginTime.Year.ToString() + seTest[i].BeginTime.Month.ToString("d2"+ seTest[i].BeginTime.Day.ToString("d2")
                    
+ "T" + seTest[i].BeginTime.Hour.ToString("d2"+ seTest[i].BeginTime.Minute.ToString("d2"+ seTest[i].BeginTime.Second.ToString("d2")
                    
+ seTest[i].BeginTime.Millisecond.ToString("d3"+ "Z" + enterSprite;
                bodyStr 
+= "DTEND:" + //"20070108T053000Z" + enterSprite;
                    seTest[i].EndTime.Year.ToString() + seTest[i].EndTime.Month.ToString("d2"+ seTest[i].EndTime.Day.ToString("d2")
                    
+ "T" + seTest[i].EndTime.Hour.ToString("d2"+ seTest[i].EndTime.Minute.ToString("d2"+ seTest[i].EndTime.Second.ToString("d2")
                    
+ seTest[i].EndTime.Millisecond.ToString("d3"+ "Z" + enterSprite;



                bodyStr 
+= "DTSTAMP:" + //"20070108T053000Z" + enterSprite;
                    seTest[i].CreateTime.Year.ToString() + seTest[i].CreateTime.Month.ToString("d2"+ seTest[i].CreateTime.Day.ToString("d2")
                    
+ "T" + seTest[i].CreateTime.Hour.ToString("d2"+ seTest[i].CreateTime.Minute.ToString("d2"+ seTest[i].CreateTime.Second.ToString("d2")
                    
+ seTest[i].CreateTime.Millisecond.ToString("d3"+ "Z" + enterSprite;
                    
                    
                bodyStr 
+= "UID:"+System.Guid.NewGuid().ToString()+"-lenovo.Calendar" + enterSprite;//
                bodyStr += "CLASS:"+"private"+ enterSprite;//
                bodyStr += "CREATED:" + //"20070108T053000Z" + enterSprite;
                    seTest[i].CreateTime.Year.ToString() + seTest[i].CreateTime.Month.ToString("d2"+ seTest[i].CreateTime.Day.ToString("d2")
                    
+ "T" + seTest[i].CreateTime.Hour.ToString("d2"+ seTest[i].CreateTime.Minute.ToString("d2"+ seTest[i].CreateTime.Second.ToString("d2")
                    
+ seTest[i].CreateTime.Millisecond.ToString("d3"+ "Z" + enterSprite;

                bodyStr 
+= "DESCRIPTION:" + seTest[i].Brief + enterSprite;//
                bodyStr += "LAST-MODIFIED:" + //"20070108T053000Z" + enterSprite;
                    seTest[i].CreateTime.Year.ToString() + seTest[i].CreateTime.Month.ToString("d2"+ seTest[i].CreateTime.Day.ToString("d2")
                    
+ "T" + seTest[i].CreateTime.Hour.ToString("d2"+ seTest[i].CreateTime.Minute.ToString("d2"+ seTest[i].CreateTime.Second.ToString("d2")
                    
+ seTest[i].CreateTime.Millisecond.ToString("d3"+ "Z" + enterSprite;
                bodyStr 
+= "LOCATION:" + seTest[i].Place + enterSprite;//
                bodyStr += "SEQUENCE:" + seTest[i].ScheduleTypeID.ToString() + enterSprite;//
                bodyStr += "STATUS:" + seTest[i].UserName + enterSprite;//
                bodyStr += "SUMMARY:" + seTest[i].Summary+ enterSprite;
                bodyStr 
+= "TRANSP:" + "OPAQUE" + enterSprite;
                bodyStr 
+= "END:VEVENT" + enterSprite;
                
string alarmBody = "";// Alarm 
                foreach (RemindParamEntity al in awokeList)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                  
                    
//短信提醒
                    if ((al.NeedRemind & 0x01== 0x01)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        alarmBody 
+= "BEGIN:VALARM" + enterSprite;
                        alarmBody 
+= "ACTION:" + "MOBILE" + enterSprite;
                        alarmBody 
+= "DESCRIPTION:This is an event reminder" + enterSprite;
                        alarmBody 
+= "TRIGGER:" + setAwokeTime(al.TimeType,al.TimeValue) + enterSprite;
                        alarmBody 
+= "END:VALARM" + enterSprite;
                    }

                    
//邮件提醒
                    if ((al.NeedRemind & 0x02== 0x02)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        alarmBody 
+= "BEGIN:VALARM" + enterSprite;
                        alarmBody 
+= "ACTION:" + "EMAIL" + enterSprite;
                        alarmBody 
+= "DESCRIPTION:This is an event reminder" + enterSprite;
                        alarmBody 
+= "SUMMARY:Alarm notification" + enterSprite;
                        alarmBody 
+= "ATTENDEE:mailto:" + Common.CommonLib.GetMemberInfo().Email + enterSprite;
                        alarmBody 
+= "TRIGGER:" + setAwokeTime(al.TimeType, al.TimeValue) + enterSprite;
                        alarmBody 
+= "END:VALARM" + enterSprite;

                    }

                    
//PC提醒
                    if ((al.NeedRemind & 0x04== 0x04)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        alarmBody 
+= "BEGIN:VALARM" + enterSprite;
                        alarmBody 
+= "ACTION:" + "DISPLAY" + enterSprite;
                        alarmBody 
+= "DESCRIPTION:This is an event reminder" + enterSprite;
                        alarmBody 
+= "TRIGGER:" + setAwokeTime(al.TimeType, al.TimeValue) + enterSprite;
                        alarmBody 
+= "END:VALARM" + enterSprite;

                    }

                }

                
//include the Alarm
                bodyStr += alarmBody;
                

            }



            headerStr 
= "BEGIN:VCALENDAR" + enterSprite +
                        
"PRODID:-//Lenovo Inc//Lenovo Calendar 90.6054//CN" + enterSprite +
                        
"VERSION:1.0" + enterSprite +
                        
"CALSCALE:GREGORIAN" + enterSprite +
                        
"METHOD:PUBLISH" + enterSprite +
                        
"X-WR-CALNAME:chen chen" + enterSprite +
                        
"X-WR-TIMEZONE:Asia/Shanghai" + enterSprite +

                        
"BEGIN:VTIMEZONE" + enterSprite +
                        
"TZID:Asia/Shanghai" + enterSprite +
                        
"X-LIC-LOCATION:Asia/Shanghai" + enterSprite +

                        
"BEGIN:STANDARD" + enterSprite +
                        
"TZOFFSETFROM:+0800" + enterSprite +
                        
"TZOFFSETTO:+0800" + enterSprite +
                        
"TZNAME:CST" + enterSprite +
                        
"DTSTART:19700101T000000" + enterSprite +
                        
"END:STANDARD" + enterSprite +

                        
"END:VTIMEZONE" + enterSprite;

            tailStr 
= "END:VCALENDAR"+enterSprite;

            Response.Clear();
            Response.Buffer 
= false;
            Response.ContentEncoding 
= System.Text.Encoding.UTF8;
            Response.AppendHeader(
"Content-Disposition""attachment;filename=" + Server.UrlEncode("fileName"+ ".ics");
            Response.ContentType 
= "text/calendar";
            
this.EnableViewState = false;
            Response.Write(headerStr
+bodyStr+tailStr);
            
//Response.Write(sb.ToString());
            Response.End();

        }

----------------------------

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 
//换算时间
 private string setAwokeTime(short valueType,int value)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
string result = "";
            
//TRIGGER:-P0DT0H10M0S

            
//提醒时间(TimeType)
            switch (valueType)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
//分钟
                case 1:
                    
if (value < 60)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        result 
= "-P0DT0H" + value.ToString() + "M0S";
                    }

                    
else if (value < 1440)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        
double aa = value / 60;
                        result 
= "-P0DT" + Math.Floor(aa).ToString() + "H" + (value % 60).ToString() + "M0S";
                    }

                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        
double aa = value / 1440;
                        
int leftM = value % 1440;//get this day value
                        double muniteLeft = leftM / 60;//get the hour value
                        result = "-P" + Math.Floor(aa).ToString() + "DT" + Math.Floor(muniteLeft).ToString() + "H" + (leftM % 60).ToString() + "M0S";
                    }

                    
break;
                
//小时//1440
                case 2:
                    
if (value < 24)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        result 
= "-P0DT" + value.ToString() + "H0M0S";
                    }

                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        
double aa = value / 24;
                        result 
= "-P"+Math.Floor(aa).ToString()+"DT" + (value%24).ToString() + "H0M0S";
                    }

                     
break;
                
//
                case 3:
                     result 
= "-P" + value.ToString() + "DT0H0M0S";
                     
break;
                
//
                case 4:
                     result 
= "-P" + (value * 7).ToString() + "DT0H0M0S";
                    
break;
            }

            
return result;

        }

 

------------

 

public   override   void  VerifyRenderingInServerForm(Control control)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
//base.VerifyRenderingInServerForm(control);
        }

 

转载于:https://www.cnblogs.com/zhegebucuo/archive/2009/04/22/1441283.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值