前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Swift 日历添加事件 删除事件

Swift 日历添加事件 删除事件

作者头像
菜菜不吃蔡
发布于 2021-03-20 06:10:50
发布于 2021-03-20 06:10:50
4.1K10
代码可运行
举报
文章被收录于专栏:编程语言编程语言
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import EventKit
/**
 Privacy - Calendars Usage Description 添加日历权限 info.list 配置权限
 */
/// 日历添加事件
class KKAddEventClasse: NSObject {
    /// 添加成功回调
    typealias SuccessAddEvent = ((_ identifier: String) -> Void)
    /// 添加失败回调
    typealias ErrorAddEvent = ((_ error: String) -> Void)
    
    
    // 提前一个小时开始
    var eventStartDate:Double = 3600
    // 提前一分钟结束开始
    var eventEndDate:Double = 60
    
    /// 是否添加闹钟 默认添加
    var isAddAlarm:Bool = true
    /// 添加闹钟(开始前多少秒)若为正则是开始后多少秒。
    var addAlarmDate:Double = 60
    
    /// 事件商店
    private  var eventStore = EKEventStore()
   
    
    /// 添加事件
    /// - Parameter time: "yyyy-MM-dd HH:mm:ss"
    open func addEventByTime(time:String,successAddEvent:SuccessAddEvent? = nil,errorAddEvent:ErrorAddEvent? = nil) {
        if time.count != "yyyy-MM-dd HH:mm:ss".count {
            return
        }
        eventStore.requestAccess(to: EKEntityType.event, completion: { [weak self](isAllow, error) in
            if error != nil {
                errorAddEvent?("添加异常")
                return
            }
            if isAllow == true {
                self?.addEvent(time:time,successAddEvent:successAddEvent,errorAddEvent:errorAddEvent)
                print("允许添加")
            } else {
                errorAddEvent?("未允许添加")
            }
            
        })
        
    }
    /// 移除事件 通过事件id
    /// - Parameter eventIdentifier: 事件唯一标识
    open func removeEnvent(_ eventIdentifier:String){
        let event =  eventStore.event(withIdentifier: eventIdentifier)
        guard event != nil else {
              return
        }
        /// 事件存在
        do {
            let _ = try eventStore.remove(event!, span: .thisEvent)
            
            } catch {
            print(error)
        }
    }
    
    private func addEvent(time:String,successAddEvent:SuccessAddEvent? = nil,errorAddEvent:ErrorAddEvent? = nil) {
        let event = EKEvent.init(eventStore: eventStore)
        /// 事件标题
        event.title = "事件标题"
        event.calendar = eventStore.defaultCalendarForNewEvents
        /// 日历显示标题
        event.calendar.title = "日历显示标题"
        
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let date:Date = formatter.date(from: time) ?? Date()
                       
        // 提前一个小时开始
        event.startDate = date - eventStartDate
        /// 提前一分钟结束
        event.endDate = date - eventEndDate
        if isAddAlarm {
            /// 添加闹钟结合(开始前多少秒)若为正则是开始后多少秒。
            event.addAlarm(EKAlarm(relativeOffset: -60))
        }
        do {

            try eventStore.save(event, span: .thisEvent, commit: true)
            DispatchQueue.main.async {
                successAddEvent?(event.eventIdentifier)
            }

        } catch  {
            errorAddEvent?("添加异常")
        }
    }
   
}

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 let event = KKAddEventClasse()
/// 添加
 event.addEventByTime(time: "2021-03-01 16:00:00",successAddEvent: { [weak self](eventIdentifier) in
            self?.eventIdentifier = eventIdentifier
        }, errorAddEvent:  {(error) in
            print(error)
        })
/// 删除
event.removeEnvent(eventIdentifier)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
你好!有添加闹钟的demo吗?
你好!有添加闹钟的demo吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
iOS 工作日——过滤法定节假日日历提醒的实现
笔者五一之前补班的时候,闹钟没响,早上差点迟到了。笔者闹钟设置的是周一到周五,iPhone没有法定节假日的设置,也没有补休的设置。。。。笔者就想要解决这个痛点,梦想着,要是做出来了,发布到商店,从此走上人生巅峰,赢取白。。。。
莫空9081
2021/06/15
6.9K0
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
这次的目标是学习和使用HarmonyOS的Calendar Kit功能,特别是最新的API 13版本。Calendar Kit让我感受到了一种与传统开发完全不同的体验——它提供的不只是简单的日历功能,而是一套集创建、查询、更新、删除等强大能力于一体的日程管理服务。
李游Leo
2024/12/31
2140
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
java 获取当前时间的三种方法
1.通过Util包中的Date获取 Date date = new Date(); SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss"); System.out.println(dateFormat.format(date)); 2.通过Util包的Calendar 获取 Calendar calendar= Calendar.getInstance(); SimpleDateFormat dateForm
botkenni
2019/11/04
46K0
39.Swift学习之常用数据类型
除了基础语法,在 iOS 开发中,经常还会用到一些数据类型如日期,二进制数据等。 日期 日期:Date,包含年月日时分秒,是一个结构体。 let date = Date() print(date) // 输出:2019-08-01 02:27:14 +0000 日期格式:DateFormatter,是一个类。从上面的代码可以看出,默认情况下的输出格式并不一定是我们需要的,这时候需要用DateFormatter格式化日期的输出格式。 let date = Date() // 构造格式化工具 let form
YungFan
2020/12/22
1.6K0
java对时间的操作,提供给你工具类,直接调用方法就可以操作时间了
-创建 SimpleDateFormat 对象时必须指定转换格式。 -转换格式区分大小写,yyyy 代表年份,MM 代表月份,dd 代表日期,HH 代表 24 进制的小时,hh 代表 12 进制的小时,mm 代表分钟,ss 代表秒。
一写代码就开心
2020/11/20
2.9K0
java对时间的操作,提供给你工具类,直接调用方法就可以操作时间了
OC知识--Foundation框架详尽总结之『数字、结构体、日期、文件类』
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Foundation-other.html 本文对Foundation框架中一些数字类(NSNumber)、常用结构体类(CGPoint、CGSize、CGRect、CGRange和NSValue)、日期类(NSDate、NSCalendar)和文件类(NSFileManager)的使用做一个详细的总结。 1.数字类(NSNumber) 1. NSNumb
程序员充电站
2018/05/31
6100
ios oc 本地添加日程
EKEventStore *eventStore = [[EKEventStore alloc] init];
conanma
2021/05/12
1.2K0
Java 中的日期与时间处理!
学习 Java 的过程中,难免会跟时间处理打交道,那我们今天就来看看,Java 中最常见的一些日期和时间处理的知识。
村雨遥
2022/06/15
2.2K0
Java 中的日期与时间处理!
java关于日期的运算等处理方法
http://www.blueidea.com/bbs/newsdetail.asp?id=989464 http://www.java-cn.com/bbs-jsp/show.jsp?id=133
全栈程序员站长
2021/05/06
6470
【程序猿硬核科普】Java获取指定时间年月日 | 时间戳转换bug你的项目中招了吗 | yyyy和YYYY的区别
最近在知乎看到有篇回答说:跨年导致日期格式YYYY和yyyy导致日期显示Bug的帖子,微信公众号、一些论坛好多中招了,快来看看你的项目里面有没有这个bug吧,哈哈lo(╥﹏╥)o。
浩Coding
2020/02/13
2.3K0
【程序猿硬核科普】Java获取指定时间年月日 | 时间戳转换bug你的项目中招了吗 | yyyy和YYYY的区别
React Native 系统日历插件
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。
网罗开发
2021/01/29
2.9K0
React Native 系统日历插件
日期格式转换
没有人见过风的模样,每当树枝摇曳,水波涟漪或浮云飘过,我们才知道风一直都在从未离开!
栖西
2023/10/17
5130
日期格式转换
java如何获取当前日期和时间
Java 8提供了一个全新的API,用以替换java.util.Date和java.util.Calendar。Date / Time API提供了多个类,帮助我们来完成工作,包括:
Java架构师必看
2021/09/14
3.2K0
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
时间格式内部其余的横线“-”、空格“ ”、冒号“:”、点号“.”等字符仅仅是连接符,方便观看各种单位的时间数字而已,国内,也可以使用形如“yyyy年dd日HHmm分ss秒”的时间格式。
晨曦_LLW
2020/09/25
5.9K0
java实用类(四)-Date 和 Calendar
创建日历类对象,不是new出来的,而是通过日历类自带的静态方法getInstance,获取;
化羽羽
2022/10/28
4750
Date类练习
控制台打印当前时间 import java.text.SimpleDateFormat; import java.util.Date; /** * Software:IntelliJ IDEA 2018.2.4 x64 * Author: MoBai·杰 * Date: 2020/5/5 10:30 * ClassName:DateDemoTest03 * 类描述:打印当前时间("yyyy年MM月dd日 HH时mm分ss秒") */ public class DateDemoTest03 {
框架师
2021/03/06
1.8K0
iOS开发之EventKit框架的应用
      iOS系统自带的Calendar应用非常强大,用户可以在其中添加日程事件,并且其提供了接口供其他应用进行调用,可以向日历中进行事件的读取和写入。
珲少
2019/07/01
4.1K0
iOS开发之EventKit框架的应用
iOS_EventKit的Calendar和Reminder的使用
EventKit掌管着日历事件和提醒事件两个App的信息 调用相关代码,需要在plist文件里添加item,如下图: 都通过EKEventStore进行访问 private var store: EKEventStore = EKEventStore() // 初始化和释放时间比较长,建议写成单例 一、日历事件的:增删改查 1、检查授权 // 1.检查授权 store.requestAccess(to: .event) { (granted, error) in if granted { // 已授
mikimo
2022/07/20
8600
iOS_EventKit的Calendar和Reminder的使用
java中获取当前时间_java如何获得当前时间
获取标准时间可以使用 System.currentTimeMillis() 方法来获取,此方法优势是不受时区的影响,但是得到结果是时间戳的格式,如:
全栈程序员站长
2022/10/04
4.7K0
java中获取当前时间_java如何获得当前时间
Java时间工具类
import java.sql.Timestamp; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class TimestampTool { /** 将毫秒转成时间 *
用户7108768
2021/09/23
1.8K0
相关推荐
iOS 工作日——过滤法定节假日日历提醒的实现
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验