优化了同步,将原本无时间的提醒事项同步成全天事项

代码改自:https://blog.csdn.net/zackerzhuang
这位博主,可以配合她的小目标,非常好用。
更新点
1、原本无时间的提醒事项全部堆积在0:00-1:00,这样下滑很容易忘掉,现改为全天,时间轴下拉不遗漏
2、全天性质(无时间有日期)的日程,如果没有做,依旧会推移到第二天全天
3、全天重复性待办,今天打卡结束,会进入第二天全天列
2、优化了图标,更加清淡(个人口味)
3、图示app是calendar和原生日历

优化难点
1、ios自带的new date 返回的时间,是无法进行等于比较的,,虽然数据类型是Number,单=和!= 无论等不等都返回true。添加if 分支遭到阻碍。
2、新建的无时间的提醒事项,getHours,getSeconds是空,同步一次之后会变成00:00:00
所以,同样是无时间的提醒,背后判定不一样。

优化遗憾
此代码逻辑下,0点这个时间段的待办会被同步到全天(就是最上面),但点击完成后,仍然可以回归到时间轴。

图示:配合第三方简直完美

原生日历:全天比较窄

代码如下

var dur_month = 3
//设置同步 同步时间为前后3个月
const startDate = new Date()
startDate.setMonth(startDate.getMonth() - dur_month)
console.log(`日历的开始时间 ${startDate.toLocaleDateString()}`)const endDate = new Date()
endDate.setMonth(endDate.getMonth() + dur_month)
console.log(`日历的结束时间 ${endDate.toLocaleDateString()}`)const reminders = await Reminder.allDueBetween(startDate, endDate)
console.log(`获取 ${reminders.length} 条提醒事项`)var calendar = await Calendar.forEvents()
var m_dict = {}
for(cal of calendar)
{m_dict[cal.title] = cal//console.log(`日历:${cal.title}`)
}const events = await CalendarEvent.between(startDate, endDate, calendar)
console.log(`获取 ${events.length} 条日历`)for (const reminder of reminders) {//reminder的标识符const targetNote = `[Reminder] ${reminder.identifier}`const [targetEvent] = events.filter(e => e.notes != null && (e.notes.indexOf(targetNote) != -1))//过滤重复的reminderif(!m_dict[reminder.calendar.title]){console.warn("找不到日历"+ reminder.calendar.title)continue}if (targetEvent) {//console.log(`找到已经创建的事项 ${reminder.title}`)updateEvent(targetEvent, reminder)} else {console.warn(`创建事项 ${reminder.title} 到 ${reminder.calendar.title}`)const newEvent = new CalendarEvent()newEvent.notes = targetNote + "\n" + reminder.notes//要加入备注//newEvent.notes =reminder.notesupdateEvent(newEvent, reminder)}
}Script.complete()function updateEvent(event, reminder) {event.title = `${reminder.title}`cal_name = reminder.calendar.titlecal = m_dict[cal_name]event.calendar = cal//console.warn(event.calendar.title)//已完成事项if(reminder.isCompleted){event.title = `✔️${reminder.title}`event.isAllDay = falseevent.startDate = reminder.completionDatevar ending = new Date(reminder.completionDate)ending.setHours(ending.getHours()+1) //默认时长一小时event.endDate = endingvar period = (reminder.dueDate-reminder.completionDate)/1000/3600/24period = period.toFixed(1)if(period < 0){period = -periodevent.location = " 延期" + period + "天完成" }else if (period == 0){event.location = " 准时完成"}else{event.location = " 提前" + period + "天完成"}}//未完成事项else{const nowtime  = new Date()var period = (reminder.dueDate-nowtime)/1000/3600/24period = period.toFixed(1)//console.log(reminder.title+(period))if(period < 0){//待办顺延event.location = " 延期" + (-period) + "天" //如果不是在同一天,设置为全天事项,也就是昨天及之前之前没做完的进全天事项if(reminder.dueDate.getDate() != nowtime.getDate()){event.title = `✖️${reminder.title}` event.startDate = nowtimeevent.endDate = nowtimeevent.isAllDay = true    console.log(`【${reminder.title}】成功进入全天【${reminder.dueDate}】待办同步`)}//今天 但过了同步时间还没做完的else{//        没有时间的提醒事项 进入当天的全天var t = new Date(reminder.dueDate)var tt =t.getHours()var t3=t.getMinutes()var t4 = t.getSeconds()if(Number(tt)<24 && tt>0 ){event.title = `◻️${reminder.title}`event.isAllDay = false  event.startDate = reminder.dueDatevar ending = new Date(reminder.dueDate)ending.setHours(ending.getHours()+1)event.endDate = ending//           console.log(`【${reminder.title}】将新建的具体时间【${reminder.dueDate}】待办同步【${reminder.dueDate.getHours()}】`)}
//有时间的提醒事项进入当天时间轴else{event.title = `◻️${reminder.title}` event.startDate = nowtimeevent.endDate = nowtimeevent.isAllDay = true console.log(`【${reminder.title}】将新建的全天待办同步`)}}console.log(`【${reminder.title}】待办顺延${-period}天` )}else{var flagtime2 = new Date(reminder.dueDate)
//          flagtime2.setHours(flagtime2.getHours())var ss=flagtime2.getHours()if(Number(ss) <23 && ss >0){event.isAllDay = falseevent.title = `◻️${reminder.title}`event.location = "还剩" + period + "天" event.startDate = reminder.dueDatevar ending = new Date(reminder.dueDate)ending.setHours(ending.getHours()+1)event.endDate = endingconsole.log(`【${reminder.title}】. ${reminder.dueDate.getHours()}五天` )}else{event.title = `◻️${reminder.title}` event.startDate = reminder.dueDateevent.endDate = reminder.dueDateevent.isAllDay = true event.location = "还剩" + period + "天" console.log(`【${reminder.title}】待办${flagtime2.getHours()}` )
//           var ss=flagtime2.getHours()
//           var sssss=typeof ss
//           console.log(sssss)}}}event.save()
}

ios提醒事项和日历同步优化相关推荐

  1. 【ios】提醒事项与日历同步升级版可快速新建提醒不用设置时间

    经过朋友反馈iPad可能不行✋目前也没有时间解决,pad用户慎用 起因: 看到知乎的 [真香!自动同步ios的提醒事项和日历,显示日打卡内容]文章,试了试,确实很方便,可以再提醒事项里添加事项,日历就 ...

  2. 无法同步谷歌日历_真香!自动同步ios的提醒事项和日历,显示日打卡内容

    ios的提醒事项没有日历视图,这是我一直想要的功能,以前一直寻求第三方软件,但是第三方软件都要收费,现在发现通过一个脚本就可以自动同步,于是自己动手写了个脚本. 视频教程请戳 真香!一键同步ios[提 ...

  3. 【已解决】iphone和mac的备忘录、提醒事项、日历等无法同步。MacBook点击“更新Apple ID 设置”无反应。

    iphone和mac的备忘录.提醒事项.日历等无法同步. 1. iCloud官网可以正常登录 2.App Store也可以正常登录 3.但是系统偏好设置中的Apple ID一直提示"更新Ap ...

  4. 如何高效的使用苹果产品的备忘录、提醒事项、日历?

    作者:HotPursuit丶 链接:https://www.zhihu.com/question/22027616/answer/338956660 来源:知乎 著作权归作者所有.商业转载请联系作者获 ...

  5. iPhone 中常用、好用的提醒类软件(闹钟、提醒事项、日历、滴答清单)

    iPhone 中常用.好用的提醒类软件(闹钟.提醒事项.日历.滴答清单) 背景 对比 iPhone 的提醒事项.闹钟.日历,以及第三方的滴答清单的通知的强弱程度,找出 iPhone 上好用的通知软件( ...

  6. 为什么苹果日历不能设置日程_iphone6提醒事项加入日历怎么不提醒我 到时

    iphone6提醒事项加入日历怎么不提醒我 到时 234游戏网友 提出于 2019-07-14 21:02:21 请问:iPhone6s plus如何添加提醒事项 1.苹果手机提醒事项不提醒,可以查看 ...

  7. Win10/Win11日历提醒与手机日历同步互联+自带邮件收发配置

    文章目录 Win10/Win11日历提醒与手机日历同步互联 日历提醒同步配置 说明 日历同步 邮件同步 注意 配置QQ邮箱 开启所需服务 复制授权码 配置Windows日历 配置同步间隔 配置手机日历 ...

  8. ios提醒事项同步日历scriptable代码

    var dur_month = 1const startDate = new Date() startDate.setMonth(startDate.getMonth() - dur_month) c ...

  9. 简单几步让iOS提醒事项和Micosoft To Do同步

    一.登录Microsoft To Do 二.在提醒事项中添加Outlook账户 设置->提醒事项->账户->添加账户->Outlook.com 最后设置一下需要推送的应用,只需 ...

最新文章

  1. Cocos2d-x列表嵌套裁剪bug
  2. Java IO 之 InputStream源码
  3. 开源界的 5 大开源许可协议
  4. 用委托来实现IEqualityComparer接口
  5. 解决SQLServer事物日志过大的方法
  6. 谷歌中巨大的 SEO 骗局!排名靠前的 HTML 编辑器也不可信
  7. Kettle调度和监控
  8. 我在项目中运用 IOC(依赖注入)--入门篇
  9. 深度学习-模型预测(论文笔记)
  10. PPT图标库 iSlide 阿里iconfont
  11. [渝粤教育] 西南科技大学 画法几何与机械制图 在线考试复习资料
  12. 微信支付开发:当前URL未注册
  13. 常兴老师--华为公司营销课程设计专家
  14. 智能汽车HMI“火了”
  15. 抖音收购musical.ly后,最难过的为什么是快手?
  16. 北京城市总体规划 (2016年—2035年)高清大图
  17. php eot 变量,在EOT内插入带有PHP变量的python代码
  18. Win10[应用商店]损坏,修复方法之一
  19. 普通路由器改4g路由器_4G工业路由器物联卡批发价格是多少?良心厂家推荐
  20. 2023电工杯数学建模AB题思路分析

热门文章

  1. ios与安卓的时间兼容问题
  2. HDU - 2033 人见人爱A+B
  3. WPS文件格式如何进行转换 et格式转换word
  4. [一天一项目]120+项目构思
  5. 【二】、Linux中mysql的安装并用Navicat连接
  6. Win32k(1) 图形线程的初始化
  7. 速腾防盗匹配出现服务器维护,新速腾遥控钥匙匹配方法(附图解)
  8. 会计科目---统一科目
  9. 配置Linux台式机作为服务器
  10. Kafka中的coordinator