您的位置:时时app平台注册网站 > web前端 > iOS9中哪些在日历App中创制三个随便时间以前在此

iOS9中哪些在日历App中创制三个随便时间以前在此

2019-12-06 23:02

彩世界网址 1

记忆中的小时候,每年年初,爸爸都会把一张新的日历画报贴在墙上,年年如此。有计生送的有漂亮娃娃的独生子女的日历,也有买种子化肥送的有农机工具广告的日历,还有好多年关于解放军叔叔的日历。于是可以在家里堂屋(客厅)墙上看到很多年份的日历。不知道为什么,一想到这个我的记忆会停留在一张1992年的日历上,日历的内容已经模糊,仿佛那是小学的某一个午后,慵懒无聊的我又一次把墙上的日历从头到尾读了一遍,这张日历因着某些原因被深深印在了记忆的角落里。

三.获取日历源中的指定日历

现在我们获取到了一个日历源,那么怎么获取其中某一个日历呢?日历在EventKit的表示为一个EKCalendar的实例,我们同样写一个帮助方法:

-(EKCalendar*)calendarWithTitle:(NSString*)title type:(EKCalendarType)type inSource:(EKSource*)source forEventType:(EKEntityType)eventType{
    for (EKCalendar *calendar in [source calendarsForEntityType:eventType]) {
        if ([calendar.title caseInsensitiveCompare:title] == NSOrderedSame && calendar.type == type) {
            return calendar;
        }
    }
    return nil;
}

上面代码很简单,不用我再碎碎念了.

 

 

) 接上一篇,我们来看一下如何根据类型和名称找到一个特定的日历源,首先我们写...

 突然发现日期对象可以进行 加减 , 利用这个特性写了一个可以说是对只要会JavaScript  的就可以写的日历;没有各种算法,只有一些逻辑相信只要懂javascript就差不多看俩眼就会的日历。

日历上有时会草草地记录一些事情,比如某日的重要日程和钱物的借还等。更多的是我和小朋友的涂鸦,刚学会写字的我写的一二三,以及后来写的我和爸妈的名字。长大后再看到这些涂鸦,还能清楚的分辨出哪些是我写的和写这些时的场景。

iOS9中怎样在日历App中创建一个任意时间之前开始的提醒(二)

接上一篇,我们来看一下如何根据类型和名称找到一个特定的日历源,首先我们写一个帮助方法:

-(EKSource*)sourceInEventStore:(EKEventStore*)store sourceType:(EKSourceType)type sourceTitle:(NSString*)title{
    for (EKSource *source in store.sources) {
        if (source.sourceType == type && [source.title caseInsensitiveCompare:title] == NSOrderedSame) {
            return source;
        }
    }
    return nil;
}

我们当然可以只通过日历源的title来查找,不过加上对其类型的检查可谓是双保险.我们在上述方法的开头位置下断点,在模拟器中运行App,不出意外应该会在该断点中断下来,我们在debug console中输入:

po store.sources

可以看到模拟器中所有日历源的输出:

(lldb) po store.sources
<__NSArrayI 0x787939e0>(
EKSource <0x78792770> {UUID = 705E0A9A-1FD0-4B56-B7D9-CA4E268ECF90; type = Local; title = Default; externalID = (null)},
EKSource <0x787939a0> {UUID = F2F63129-2812-48C0-80B8-AFCEFFF9AC84; type = Other; title = Other; externalID = (null)}
)

可以看到日历数据库中第一个日历源的真正名称为Default,而后面一个名称为Other.这就印证了我在第一篇中说的,在模拟器中显示的第一个日历源的名称只是一个便于用户理解的别名.

如果在真机中运行呢?你会发现第一个日历源的名称为iCloud.区别是前者是一个本地的源(EKSourceTypeLocal),后者是一个远程的源.这里多说几句,远程的日历源也有很多种类型,比如:

    EKSourceTypeExchange
    EKSourceTypeCalDAV

它们分别表示两种不同的日历通讯协议,用来同步客户端和服务器端上的日历内容.感兴趣的童鞋可以自行度娘谷哥搜寻.

现在我们可以肯定模拟器中的Default源是本地源,而iCloud源是一个CalDAV类型的远程源.

下面我们就按照上面我们分析过的内容来分别获取Default和iCloud源:

//获取iCloud源
EKSource *icloudSource = [self sourceInEventStore:store sourceType:EKSourceTypeCalDAV sourceTitle:@"iCloud"];
//获取本地Default源
EKSource *localSource = [self sourceInEventStore:store sourceType:EKSourceTypeLocal sourceTitle:@"Default"];

 

那时一面墙上往往会保存着几年甚至十几年的老日历,从我牙牙学语到太阳当空照开心上学堂,成长中的每一重要时刻,家庭中每个成员的喜怒哀乐欢喜忧愁,这些日历是岁月流过的忠实的见证者。透过这些日历,我看到了年轻的妈妈,疼我的奶奶,还有小时候所有阳光温暖的日子。

  

彩世界网址 2

     彩世界网址 3

而现在,我们不用往墙上贴日历了,或者是用台历,用完扔掉,或者用挂历直接挂在墙上,用完同样扔掉。很少有人会保存这些日历,再也不会有在一面墙上张贴的好多年的光阴,它们静静的站在那儿,注视着我们一天天长大,注视着岁月变迁,容颜老去。而它们,也会连同旧时光在某一天被埋葬在老房子的瓦砾中,完全消失不见。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
   *{
    margin: 0px;
    padding: 0px;
   }
   #data{
    width: 280px;
    border: 1px solid #000000;
    margin: 20px auto;
   }
   #data > p{
    display: flex;
   } 
   #data > h5{
    text-align: center;
   }
   #data > p > span{
    padding: 0 10px;
   }
   #prev,#next{
    cursor: pointer;
   }
   #nian{
    flex: 1;
    text-align: center;
   }
   #title{
    overflow: hidden;
    list-style: none;
    background: #ccc;
   }
   #title > li{
    float: left;
    width: 40px;
    height: 26px;
    line-height: 26px;
    text-align: center;
   }
   #date{
    overflow: hidden;
    list-style: none;
   }
   #date > li{
    float: left;
    width: 34px;
    height: 34px;
    margin: 1px 1px;
    border: 2px solid rgba(0,0,0,0);
    line-height: 34px;
    text-align: center;
    cursor: pointer;
   }
   #date > .hover:hover{
    border: 2px solid red;
   }

   .active{
    color: red;
   }
  </style>
 </head>
 <body>

  <div id="data">
   <p>
    上一月
    2017
    下一月
   </p>
   <h5 id="yue">一月</h5>
   <ul id="title">
    <li>日</li>
    <li>一</li>
    <li>二</li>
    <li>三</li>
    <li>四</li>
    <li>五</li>
    <li>六</li>
   </ul>
   <ul id="date">
   </ul>
  </div>

  <script type="text/javascript">
   var dat = new Date(); //当前时间
   var nianD = dat.getFullYear();//当前年份
   var yueD = dat.getMonth(); //当前月
   var tianD = dat.getDate(); //当前天    这保存的年月日 是为了 当到达当前日期 有对比

   add(); //进入页面第一次渲染

   function add(){
    document.getElementById('date').innerHTML = "";

    var nian = dat.getFullYear();//当前年份
    var yue = dat.getMonth(); //当前月
    var tian = dat.getDate(); //当前天
    var arr=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
    document.getElementById('nian').innerText = nian;
    document.getElementById('yue').innerText = arr[yue];

    var setDat = new Date(nian,yue   1,1 - 1); //把时间设为下个月的1号    然后天数减去1  就可以得到 当前月的最后一天;
    var setTian = setDat.getDate(); //获取 当前月最后一天
    var setZhou = new Date(nian,yue,1).getDay(); //获取当前月第一天 是 周几

    for(var i=0;i<setZhou ;i  ){//渲染空白 与 星期 对应上
     var li=document.createElement('li');
     document.getElementById('date').appendChild(li);
    } 

    for(var i=1;i<=setTian;i  ){//利用获取到的当月最后一天 把  前边的 天数 都循环 出来
     var li=document.createElement('li');
     li.innerText = i;
     if(nian == nianD && yue == yueD && i == tianD){
      li.className = "active";
     }else{
      li.className = "hover";
     }

     document.getElementById('date').appendChild(li);
    }

   }

   document.getElementById("next").onclick = function(){
    dat.setMonth(dat.getMonth()   1); //当点击下一个月时 对当前月进行加1;
    add(); //重新执行渲染 获取去 改变后的  年月日  进行渲染;
   };
   document.getElementById("prev").onclick = function(){
    dat.setMonth(dat.getMonth() - 1); //与下一月 同理
    add();
   };
  </script>
 </body>
</html>

乡下的老房子是土砌的墙,新房子在几年后墙体便会产生一些裂纹,颜色也会变成老旧的土黄。墙上那 些日历,或许是因为淘气的孩子,或是因为时间的侵蚀,往往在贴上几个月后就会变得斑驳起 来,衬上老土墙的背景,立马显出一种特别真实的沧桑感来,这种感觉是任何做旧都出不来的。

本文由时时app平台注册网站发布于web前端,转载请注明出处:iOS9中哪些在日历App中创制三个随便时间以前在此

关键词: