日历是效率概念中的重头戏,日历工具自然也在效率工具中有很重要的位置。iOS 上有一批明星日历应用,日历该有核心功能都可以做得到,还各有一批拥趸,所以是稍有不甚就容易得罪人的话题。

从人气来看,Fantastical 大概是媒体眼里最热门的选择:

站点文章最佳
The Sweet SetupThe best calendar App for iPhoneFantastical
LifehackerThe Best Calendar App for iPhoneFantastical
iMoreBest calendar apps for iPhoneCalendars 5
The VergeThe Best Calendar App for iPhoneGoogle Calendar
iDBThe best calendar apps for iPadFantastical
MacworldThe best calendar apps for iPhone and iPadFantastical

这些是写过日历工具横向对比的,同时可信度也不错的站点,6 个有 4 个选的 Fantastical。但我心里明白,这些都可能是马太效应的结果,特别是应用圈的马太效应尤其严重。虽然我也曾经提过「用 Fantastical 来记事件,用 Timepage 来看日历」,但我一直希望有日历工具可以打破这种现象,从一些新的思路来突破。截至到现在,即使我一直期待着不同的结果,情况还是没有太大变化,我个人的意见仍然是 Fantastical 是输入效率最高的,Timepage 是查看体验最舒服的

不过,并不是说非这两个应用不可。

这次参评的日历工具除了原生日历应用之外有 4 款:Timepage、Google Calendar、Fantastical 和 Calendars 5。Google Calendar 是个非常值得留在设备上的日历工具,它将自己的人工智能放到了新版的日历之中,这一点不是一般的第三方应用可以奢求的;Calnedars 5 则对月视图与周视图进行了另辟蹊径的设计。它们各自的通知中心小组件也都各有特色。

此外,除了单独考察工具,日历服务也是很重要的,所以在这篇文章我也会提供日历服务选择方面的参考。

原生日历

要对比 iOS 上的日历工具,很多人都直接忽视了原生 iOS 应用,但如果原生够用,我们是没必要再花时间考察和选择第三方工具的。所以在一开始,有必要先看一下原生日历工具如何,它有哪些地方做得不大到位,让我们觉得不得不换。

原生日历的视图:中规中矩

iPhone 的原生日历,在最常用的竖屏情况下,最顶级的是年视图,在年视图点击每个月份,放大之后可以看到月视图,在月视图选择某一天,即可进入日视图

也就是说,在竖屏情况下,iPhone 原生日历保留了不常用的年视图,而跳过了使用频率较高的周视图。如果我们想看周视图,就需要把屏幕横过来:

这个界面我认为是苹果做得最认真的界面,有一个细节可以说明这一点:它会刻意给不能显示的事件露一条线,提示用户这里其实还有个事件,不要遗漏。

对于大多数用日历的人来说,周视图可能是最常需要查看的一个界面,因为它反应的是一个人近期的情况,可以通过时间块最直观地体现给使用者哪些时间已被占用,哪些时间还有余暇。

虽然苹果把这个界面做得很认真,但是把周视图放在横屏模式下在我个人看来是个典型的妥协方案。苹果大概是认为在竖屏状态下,无法完整且美观地横向展示一周的事件情况,所以不得不利用横屏。但这种方案可能不少人都没意识到,我个人用 iPhone 很多时候是竖屏锁定的,也就让我查看周视图的更不方便。

除了以时间划分的视图之外,目前不少日历工具都会有一个事件列表视图,iPhone 原生日历也不例外,在屏幕的右上角用形象的列表符号体现了列表视图,轻触这个按钮就可以在日视图与列表视图之间切换:

iPhone 原生日历视图设计小结

简单地给出一个结论的话,我对 iOS 原生日历的评价是:中规中矩,出彩点少。

首先,在竖屏情况下,iPhone 原生日历保留使用情境较少的年视图、跳过周视图的设计不算是一步好棋。为了完整且美观地展示信息而从便捷上妥协令我不大满意。

其次,在月视图上,iPhone 原生日历能够提供的信息过于匮乏。视觉上只存在有事件和无事件的差别,无法分辨哪一天更忙,更不要说能一眼看出接下来有什么事在等着自己了。

最后在日视图和列表视图方面,也没有特别出彩的地方。

当然,原生日历在视图、设计方面有一些让人眼前一亮的地方,前面提到的周视图中的小细节就是一处。此外,原生日历的各个视图都可以让我们查看农历(需要在设置-日历-其它历法中设置),这就是其它不以中国市场为重心的日历工具很难做到的。日历图标能显示今日日期,也是其它客户端无法做到的。

原生日历的输入:最大短板

日历输入的场景很繁杂,在记一次事件时,我们要考虑的有事件名称、日历名称、事件日期、事件发生时间、持续时间、是否重复、事件位置、邀请人、是否提醒、提前多久提醒、提醒间隔等等等等,根据事件的复杂程度,我们要填的东西也不一样。

所以首先,日历工具在输入方面要考虑的是怎么样让使用者能够迅速准确地输入一个日历事件

此外,我们未必每次只填写一个日历事件,很多应急、专业化的场景都是一次性确定多个时间点,所以日历工具还要考虑怎么样让使用者迅速准确地输入多个日历事件

在这两点上,原生日历可以说还停留在日历工具的原始阶段:输入单个事件时必须通过图形界面,手动选择每一项需要填入的内容,因此通过原生日历本身,根本无法做到一次性添加多个事件。

这里要简单探讨一下为什么在输入日历时图形界面相对较慢,或者说相对什么方式来说较慢。

第三方日历应用,比如 Fantastical,在使用的输入日历的方法是一种被称为「自然语言输入」的方法。我们输入一行文字:「东京——深圳 27/1 7:50-12:50 at 成田机场」,Fantastical 就可以把这段文字中的事件、时间、地点识别出来,安排到相应的位置。

Fantastical 的输入

通过文本输入不光是一种神奇的体验,从效率上来看,它也要比通过图形界面来输入优势更大。比如输入日期 1 月 27 日 时,文本输入用 27/1 或者 1.27 就能解决,而图形界面需要通过一个日期的滚轮来选择,劲儿大了还容易滚过。在信息少的时候还不大能体会到两者的差别,但信息较多时——比如除了日期还要选择起始时间、截止时间,有 4 个滚轮要滚——就会很麻烦了。

因此在这种机制下,原生日历输入单个事件时快不起来,并且没有一次性添加多个事件的能力。因此,在我看来,输入才是原生日历的最大短板,也是我从根本上不得不诉诸第三方日历工具的原因。

当然,通过 Siri,尤其是 iOS 11 之后添加的「键入以使用 Siri(Type to Siri)」这个功能(设置-通用-辅助功能-Siri)也可以做到一定程度上的自然语言输入,但这算不得是原生日历应用的特权,Siri 把事件添加到了 iCloud 里,第三方日历应用只要能使用 iCloud 账户,就也能获取通过 Siri 添加的事件。

另外,通过 Workflow 等第三方工具,也可以做到批量添加日历事件,但和 Siri 添加事件一样,这些内容第三方日历应用也可以获取,所以也算不得原生日历应用的特长。

第三方日历应用

现在我们已经比较明确原生日历应用的短板所在了:

  1. 视图方面不大出彩,尤其是月视图信息不足和竖屏隐藏周视图可以称为扣分项;
  2. 输入方面可谓落后,添加事件诉诸于图形界面和滚轮,输入单个任务时已经快不起来,也失去了一次性添加多个事件的能力。

所以接下来主要要考察的,就是在基本功能完备的情况下,视图和输入方面是否出众。第三方日历应用的参评者是一直在我设备上的,国内外口碑都不错的 4 款第三方日历应用:Fantastical、Timepage、Google Calendar、Calendar 5。它们基本功能都足够完备,在视图、输入和各种日历相关功能上也各有所长。

第三方日历应用的视图

前面已经说过日历视图分为:年、月、周、日、列表几个视图。在 iPhone 上,由于空间限制,一般会做出一些取舍和妥协,不会把这些视图都全部实现。所以关键点在于:

  1. 哪种取舍的思路你认为更加合理,更适合你的日常使用情况;
  2. 在同样的取舍思路下,哪个工具做得更好。

Calendars 5:月视图功能最完整

年视图本来就不大常用,我列出的四个第三方工具也都没有做这个视图,所以就不再考察,我们直接跳过它来看月视图。

在月视图这个点上,真正兼顾到信息完整性的只有 Calendars 5 和 Google Calendar:

Calendars 5 和 Google Calendar 的月视图

Fantastical 和 Timepage 在这方面取舍就比较倾向美观:

Fantastical 用日期下面点的数量来表示繁忙程度,并且把列表视图接到了月视图之下;Timepage 则用了一个较为取巧的方式——颜色填充的透明度——来体现一天的繁忙程度。

Fantastical 和 Timepage 的月视图

在我的使用中,我意识到每个视图其实都不只是用来看的,它也需要具备一些功能。比如某个事件改期,我们一般要去修改这个日历事件,但是如果它可以在月视图中通过拖拽修改来修改日期,就更有效率也更符合我们使用触屏设备的直觉。还有一些不定期的重复事件,比如我曾经打工时的 Shift,如果可以在月视图直接复制粘贴,就不必我一个一个手动输入了。

在这些场景,做的最好的是 Calendars 5,在它的月视图中,事件可以任意拖拽,长按一个事件,会弹出一个小菜单,其中有「复制」,选择「复制」后再长按一个新的日期,就能看到「粘贴」按钮,可以把事件粘贴到相应日期。

Calendars 5 拖拽与复制粘贴

这些功能 Google Calendar 就无法做到,因为它不是真的专门为 iOS 定制的,所以甚至不能支持 iOS 11 中的重点特性——拖拽。

Timepage:周视图与列表视图的完美结合

在这部分我们主要考察的是周视图,因为日视图和列表视图都不是原生应用的短板。而且各个工具也都有日视图和列表视图,表现得大同小异。至于周视图,则是一般查看最频繁的日历视图,各个工具都不会错过这个功能,这四个工具也在这个地方展示出了完全不同的理解与取舍。

Fantastical iPhone 横屏

Fantastical 和原生日历一样,在周视图下了大功夫,可惜放在了横屏上。而且在这个横屏我们还可以看到 Fantastical 的另一个思路——尽量在一个界面多显示信息,所以它把列表视图也加到了这个界面,就像在竖屏状态下它把列表视图加到了月视图中一样。如果我们看 iPad 的话,会发现 Fantastical 更企图在一个界面显示所有视图的野心:

包含了月视图、周视图、列表视图的 Fantastical

在 iPhone 上,我不认为 Fantastical 这种尽量多地把所有视图压在一起的想法更合适。但在 iPad 上,因为设计空间足够,我们的视线也无法分散整个屏幕,所以利用好空余空间的思路我是能够理解的。

除了 Fantastical 之外,其它 3 个第三方工具都在 iPhone 的竖屏上实现了周视图,只是思路截然不同:

Calendars 5、Google Calendar、Timepage 的竖屏周视图

我们先看中间的 Google Calendar,挤得难受。看到这个视图我们就能理解为什么原生日历和 Fantastical 不想在竖屏上实现传统的 7 日周视图了。

最左边的 Calendars 5 使用了别样的思路:

  1. 它使用的座标轴和传统思路是相反的:传统的是横向显示日期,纵向显示事件,而 Calendars 5 则是纵向显示日期,横向显示事件
  2. 全天事件和普通事件的事件卡片占用的大小一样,从左向右堆积事件卡片,先是全天事件,随后按事件的起始时间排序;
  3. 放弃了使用表示事件跨度的时间块,把事件的持续时间标记到了每个事件卡片上。

从这个视图下,首先审美上是过得去的,也可以迅速知道这一天事件的多少。不过一些信息还是会损失掉,比如两个时间有重叠的事件会不容易察觉。

Calendars 5 这种保证审美、损失部分信息的取舍我觉得可以接受,或者说不得不接受。因为传统的纵向 7 日周视图已经由 Google Calendar 显示出效果有多么糟糕,任谁有点审美都不会做一个宽度这么窄的表格。而像原生日历和 Fantastical 那样把周视图放到横屏的话,就是把一个重要功能放到了一个罕见的情境下,多数用户可能一直都不会发觉有这么一回事。

但是我想说 Calendars 5 还是不够大胆:

  1. 事件卡片无意义:因为无论是全天事件还是时间跨度不同的普通事件,它们的卡片大小完全一致;
  2. 整个界面的尺度不够灵活:日期跨度限制到了 7 天,事件多于 5 个的时候就不能完整显示。

而 Timepage,就是在和 Calendars 5 做出一样取舍的情况下,迈出了这大胆的一步,更彻底,也更灵活:

Timepage 视图缩放

Timepage 把周视图直接做进了列表视图,既然没办法在竖屏完美呈现每个事件的跨度,那就直接舍弃跨度,用文字来表示。同时,可以通过手指缩放,显示不同的尺度,这样忙的时候可以只显示 3 天的情况,闲的时候也可以显示 10 天的事件。

把周视图和列表视图的结合也让 Timepage 避免了列表视图的软肋——事件过于突出,导致日期分割不明显。在这些点上 Fantastical 是做得最不理想的:

Fantastical 的列表视图

日期在图里只是被淡化的小字,远不如日历事件明显。而且因为这种列表视图会把无事件的日子跳过,导致我一看到这个列表就焦虑,感觉自己怎么这么多事,但实际上事件之间有可能会间隔很多天。

因为这些原因,我个人特别推崇在 iPhone 上用 Timepage 来查看日历。如果你查看月视图较多,也可以备一个 Calendars 5。

第三方日历应用的输入

接下来我们来看原生输入法的最大短板——输入。

我们已经提过自然语言的优势了,具备这个功能的日历应用自然就会占有输入上的优势。

我挑选的 4 个第三方日历应用里,Timepage 没有自然语言输入,而且添加日程最不方便,但是因为音效细腻、视图取舍最符合我的使用习惯,所以我才只它看。除了 Timepage 以外的其它三个应用,多多少少可以说有自己的自然语言输入,但实现的情况也不大一样。

Fantastical:语法最灵活

FantasticalCalendars 5 比较接近,是使用一套规则来实现自然语言。这种方法其实是使用操作符(Operator)来让机器针对某个信息做判断,而并非使机器真正理解了我们的语言。尽管 Fantastical 自称「Fantastical's natural language input is very flexible,so just enter your event the same way you would tell someone, like an assistant」,但是实际上我们还是不能这么自在,特别是使用中文时,更是要遵守软件既定的规则。所以想要用好这种「自然语言」,每次输入都能迅速准确,一份靠谱的文档必不可少。

但是 FantasticalCalendars 5 都没有提供这份文档,而是分别提供了一些输入的实例。所以我当初写了一篇《Fantastical 的自然语言识别》记录了我摸索到的可用的操作符。Calendars 5 的语法我还没有摸索过,但是我最近试了试,发现一些 Fantastical 语法中比较复杂的情况 Calendars 5 还是无法驾驭,比如 7 月 1 日到 8 月 1 日之间的每个周一周二和周五 这种复杂的日期重复情况,Fantastical 可以用 on Mons Tues Fris from 7/1 to 8/1 来实现,但 Calendars 5 就做不到,这样的例子就不一一列举了。在灵活程度上,Fantastical 还是要胜过 Calendars 5 的。

Fantastical 输入方面的第二个优势,是它为了方便输入,特别在软件中为键盘上面增加了一行自然语义常用字符:

Fantastical 的键盘

这就让它在输入事件的时候更加方便,不用为了输入日期和时间而来回切换键盘。

Fantastical 输入方面的第三个优势是可以一次性添加多个事件,其它应用似乎都忽视了这种需求。能做到这一点是因为 Fantastical 支持 x-callback-URL,因此只有它和 Drafts(一款 iOS 上的笔记应用)可以做到批量添加任务, iOS 上的 OmniFocus 也只能批量地把任务作为日历事件发到 Fantastical 上而不能发送到其它的日历应用中……

所以,Fantastical 在老式自然语义的思路上一骑绝尘,不见来者。其实我在文中提的还只是一些功能上的优势,Fantastical 的动态补全、自动翻译并匹配一些比较重要的地址这些功能,都能让你在输入事件的时候为之惊艳。

Google Calendar:人工智能的弯道超车?

如果说有谁用的智能输入更接近自然语义,毫无疑问就是人工智能巨头——Google 家的服务了。Google Calendar 也在输入日历事件的部分加入了人工智能,但是有两个主要的问题:

  1. 精度问题:用了人工智能就代表它不会给什么操作符的语法来让我们用。这时候,如果人工智能不够精准,反而常出错像人工智障,我们还没有比较机械的方法精准输入,效果就会很差。
  2. 半文本输入:自然语义的意义在于用文本尽量多地代替,甚至完全代替图形界面(比如批量添加任务的时候)。而 Google Calendar 目前的情况是一种半文本半图形界面的结合。比如我要输入明天,它不能直接替我填如明天,而是要识别一下,识别后要我手动选一下它会确定这是「明天」。

所以在这个方面,我还是更倾向用 Fantastical 那种机械的方式。因为用于日历事件的那几个变量,用人工智能可以说是牛刀杀鸡,不是大材小用,而是不顺手,别扭。Fantastical 已经在实现日历相关的自然语义这条路上走得足够成熟,只要熟悉已有的语法,就可以基本忽视图形界面地使用纯文本添加事件。

虽然我在输入日历事件这个点上认为 Fantastical 更舒服,但是给日历配上人工智能这个思路却不容小觑。

在 Google Calendar 里,添加内容的种类除了一般都有的「活动」和「提醒」之外,还有一个「目标」。这个「目标」里包含了「锻炼」、「培养技能」、「规划生活」等需要周期进行,坚持下来后就可以提高生活质量的模块:

在 Google Calendar 中添加目标

选择「锻炼」后,会让我们继续选择锻炼的项目、一周几次、以及持续时间等:

运动、频率、持续时间

目前在我的使用来看,它们推荐的时间段还不大理想,但是我觉得这个思路也许会很有潜力。因为除了根据我们已经记录在日历上的时间块以外, Google 可以获取我们上网时的大量个人数据,这些数据应该能够帮助 Google 更合理地为我们安排活动。

服务选择:在 iOS 上用 Google Calendar 服务

除了能够通过人工智能安排任务,Google Calendar 的服务属性也为它加分很多,举比较典型的一个例子:我在 Gmail 中收到的飞机票邮件,Google Calendar 会自动为我识别为一个日历事件添加到 Google Calendar 里,就算我设备上没有装 Google Calendar  这个应用。

现在的 Google Calendar 已经可以与 Todoist、IFTTT 等服务相关联,在未来这样的可能性还会更多。因此在服务上,选择 Google Calendar 要比 iCloud 适用的范围更广,能用得上的人应该试一试。

综述、我的选择以及结语

  • 服务Google Calendar 的可能性更多,有条件的话推荐 Google Calendar;
  • iPhone 上的查看Timepage 在列表视图和周视图的结合思路最出色,我个人最偏爱;
  • iPad 上的查看:因为设计的空间比较大,所以各个应用在视图上并没有特别重要的区别,所以各位根据喜欢即可,我个人比较偏好 Fantastical 的设计,同时觉得 iPhone 上比较出众的 Timepage 在 iPad 上表现很差;
  • 输入Fantastical 的自然语言输入规则最灵活,我也总结出了语法,同时还有专为文本输入设计的键盘、支持 x-callback-URL,是我眼中输入方面的最佳选择。

至此,从 iOS 原生日历在视图和输入方面的限制出发,我们已经探讨了几个优秀第三方客户端在这两个方面的优劣之处,我也给出了我的选择。但是篇幅所限,也许对各位读者眼中重要的元素有所遗漏,或者各位也许会有不同的出发点选择不同的工具,还有可能我考察的这些第三方客户端已经过时,一些新秀早已超过了它们……

因此,如果你有自己认为比较优秀的、或是自己用起来十分顺手第三方日历客户端,不妨在评论里分享出来。

附:价格对比

软件 平台 价格
Fantastical iPhone 4.99 美元
iPad 9.99 美元
macOS 49.99 美元
Timepage 订阅制 14元/月、80元/年
Calendars 5 iOS 6.99 美元
Google Calendar iOS 免费
网页 免费