生活中我们或多或少有些值得纪念的日子,升学升迁,婚庆嫁娶,除了看时间,还可以存档我们个人的一些照片,便于我们回忆观看。
先看看效果?

实现简单的倒计时
第一步:新建 Database
新建一个 Notion Database,接下来对属性进行一个简单修改。

第二步:创建截止日期
开始创建我们的倒数日,比如我想知道 2019 年结束还剩多少天。
这里我将数值调到 2019.12.31

第三步:计算倒计时
计算倒计时,其实就是一个简单的减法,用截止时间减去现在时间,就能得出还剩余多少天。
简单归简单,在 Notion 中我们应该怎么实现呢?细心的小伙伴如果注意到第一步的时候其实我改了两个属性,一个是时间,另外一个就是辅助我们计算倒计时的 Notion formula。(这里就不对 Notion formula 做过多介绍,未来会单独出一篇介绍。)
Notion formula 中提供一个计算两个时间差的函数 dateBetween()
,在 Notion formula 中我们找到这个函数,看看介绍。

我们拎出使用方法
dateBetween(date, date, text)
----
dateBetween(date, date2, "years")
dateBetween(date, date2, "quarters")
dateBetween(date, date2, "months")
dateBetween(date, date2, "weeks")
dateBetween(date, date2, "days")
dateBetween(date, date2, "hours")
dateBetween(date, date2, "minutes")
dateBetween(date, date2, "seconds")
dateBetween(date, date2, "milliseconds")
接下来我们对方法做一下简单的改造与介绍
dateBetween(date, date2, text)
在 dateBetween()
函数中,date - date2 就是分别对应刚刚新建的时间减去现在的时间,text 就是展示这个时间的形式,可以选择年、季度、月、日、小时、分钟、秒、毫秒进行展示。
对了,Notion 也提供了当天日期的函数 now()
,通过 now()
函数,我们就能很快得到当前日期。

有了截止时间与现在的时间,万事俱备,让我们来尝试一下使用最终时间减去现在的时间。代码如下:
dateBetween(prop("Time"), now(), "days")

第四步:美化展示
这样我们就得到一个简单的倒数日,似乎并不美观,那我们尝试加一些 emoji 显的更有人情味些。代码如下:
还剩 + dateBetween(prop("Time"), now(), "days") + 天

诶,竟然不对?Notion formula 报错了。
哈哈,不逗大家了,这里需要对刚刚数值进行一个转格式,format()
函数就是帮助我们转成与 "? 还剩 " 相同的格式。为什么要转?
不转化前,dateBetween(prop("Time"), now(), "days")
就是实打实的钢铁,"? 还剩 "
是融化的铁,我们用 format()
函数加热实打实的铁,这样才能融合更彻底些。(这是我编的,事实上是程序规定。)
更改后的代码如下:
"? 还剩 " + format(dateBetween(prop("Time"), now(), "days")) + " 天"

那么,我们的倒数日就算制作完成了!
如何计算并展示纪念日
其实计算纪念日与倒数日的公式形式一样,只是对 prop("Time")
与 now()
做了一下调换。代码如下:
dateBetween(now(), prop("Time"), "days")

我们把现有代码粘贴到之前写好的公式,发现之前的倒数日变成负数了,有点头疼。
其实 Notion formula 并不支持每一行一个公式。那么为了计算日子,岂不是要建两个 Database?
那么,有什么办法可以支持两个一起用呢?
Notion formula if()
还好 Notion formula 是支持 if() 判断的,具体使用方法如图:

把实例拿出来遛一遛:
true ? 1 : -1 == 1
if(false, "yes", "no") == "no"
上述代码写的还是有歧义,我再转换一下
1 < 2 ? "yes" : "no" == "yes"
if(1 > 2, "yes", "no") == "no"
1 从基础数学来讲,不会大于 2 ,所以得出判断就是 "no"
,如果是小于 2 ,那么就是"yes"
使用 Notion if() 来判断展示纪念日与倒数日
其实时间可以拿来进行判断,我做一下解释
- 我们设置的时间 < 现在的时间,那么就是纪念日;
- 我们设置的时间 > 现在的时间,那么就是倒数日;
- 我们设置的时间 = 现在的时间,那么就是现在时间。
那么代码可以这么写:
if(prop("Time") > now(), "倒数日" , "纪念日")

再将之前的写好的代码分别粘贴到对应的倒数日与纪念日,这里我对纪念日进行了美化,具体与倒数日执行步骤一样。代码如下:
# 倒数日
"? 还剩 " + format(dateBetween(prop("Time"), now(), "days")) + " 天"
# 纪念日
"? 已过 " + format(dateBetween(now(), prop("Time"), "days")) + " 天"

整体代码如下:
if(prop("Time") > now(), "? 还剩 " + format(dateBetween(prop("Time"), now(), "days")) + " 天", "? 已过 " + format(dateBetween(now(), prop("Time"), "days")) + " 天")
如果你是时间命名不是 Time,请将代码中所有 Time 进行一次替换,替换成你命名的名字。
我们没有制作我们设置的时间 = 现在的时间,那么就是现在时间
这段,这个我有时间再写。(已经很晚了。
再补充一下,Notion 制作纪念日,倒数日的好处其实在这里,不仅仅记录时间,还记录图片,视频,文档等等等...

结语
Notion 的能力远不止如此,还有更丰富的场景等着我们挖掘,下一篇我会回归到基础,教大家如何更快上手 Notion。
如果你想本篇内容能够出视频讲解,那么请点赞,到达 30 个赞我就制作视频讲解。
如果你有 Notion 相关问题,欢迎添加我的微信 Linmiv
交流。
请问我想在一个 Date 里面设置了开始和结束日期,怎么统计之间的工期?
请教一下,怎么修改默认的时间格式,date出来的格式每次都要修改,还有创建时间的格式怎么修改的?
每次都要修改,等官方更新。
你好,我想请教一下,如果我们date 栏里面的时间是有包含start date 和 end date 那么我们怎么计算之间时间跨度
datebetween(end(prop(Time)),start(prop(Time)),"days") 就可以了。
感谢 原来我少打了个括号 所以一直不成功
empty(prop("Deadlines")) ? "" : if(formatDate(prop("Deadlines"), "YYYY/MM/DD") == formatDate(now(), "YYYY/MM/DD"), "? 今日需完成", if(prop("Deadlines") > now(), "⏳ 还剩 " + format(dateBetween(prop("Deadlines"), now(), "days") + 1) + " 天", "? 已推迟 " + format(dateBetween(now(), prop("Deadlines"), "days")) + " 天"))
想问一下,实现生日倒计时的思路是怎么样的?比较麻烦的是,比如算出了一个人今年的生日,还没到和已经过了两种情况,后者的话算倒计时要算第二年了
计算日期就好了。
你好,请问能否实现农历的日期纪念日记录及提醒?因为这个对于中国人来说作用很大~
dateBetween(prop("Time"), now(), "days")
我发现如果Time是今天或者明天都会显示0,…这样如果截止日期是明天,倒计时并不会显示还剩1天,而是还剩0天
建议再优化一下显示效果, 日期为空的时候不显示计时, 要不然很尴尬?
```
empty(prop("Deadline")) ? "" : if(prop("Deadline") > now(), "? 还剩 " + format(dateBetween(prop("Deadline"), now(), "days")) + " 天", "? 已过 " + format(dateBetween(now(), prop("Deadline"), "days")) + " 天")
```
请问批量添加日期递进序列怎么做呀,比如表格里想看到2020-7-1到2020-7-30每天作为第一列。
不支持,建议在 Excel 中拖拽好,粘贴进来。
哭了,Coda可以
date(2020,7,(1+RowId(thisRow)))就行,但是Coda没有notion好看……
您好,请问怎么计算两个日期之间的过去了多少天,而不是现在呢?
再添加一个属性,或者使用函数里面的 endTime 与 startTime。
你好,我想问一下你的这个制作教程的gif图片是怎么制作的,需要那些工具
软件是:gifox
请教一下,我在用if的时候,if(1 > 2, "yes", "no") == "no" 那个1>2里我设定了如果全部checkbox都点击了那么就显示yes.如果没点击全就显示no,可是我还有一个条件是当我设定的打卡时间不等于now()时间,我想显示空,这个怎么写啊
Notion 里面是有一个判断空的函数,empty()。写法的话:if(empty(), "Yes" , "No"),表述就是如果 Prop() 是空的,那么第一个就是显示空的结果,反之显示不是空的结果。
您好,用了您给的代码,但是请问这个emoji怎么替换呢?在代码中尝试更换,但是不知道怎么换成别的样式,谢谢
请问可以用秒倒计时嘛?
可以,用 dateBetween(date, date2, "milliseconds")
都是少1天,教程里8月27日距12月31日是126天而不是125天,今天测试了下发现“后天”显示“还剩1天”,“前天”显示“过去1天”
前一个语句+1天,解决了^_^
前一个语句+1天 还是没明白,另外有直接加减乘除的代码有吗?
可以直接 Duplicate 楼主教程中的模板么
完全可以,是开放的哈。
完全可以,是开放的哈
请教下,倒计时那列能不能做到各行格式不一样,如添加不同的emoji。
理论上可以,用 if 判断就好,不过很浪费时间。
纪念日提醒的功能可以实现吗?
可以实现。
请问为什么在notion里找不到database这个模板啊
第二个 GIF 教学怎么新建 Database
厉害了?