Notion 制作纪念日与倒计时 | Notion 进阶教程

Notion 制作纪念日,倒数日的好处是不仅仅记录时间,还记录图片,视频,文档......

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

先看看效果?

实现简单的倒计时

第一步:新建 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 交流。

感谢阅读,请评分鼓励一下我!

感谢评价,欢迎关注我的 Twitter 哦。

感谢阅读,请评分鼓励一下我!

感谢评价,欢迎关注我的 Twitter 哦。

Notion

Notion Timeline 使用指南

2019-8-14 0:09:10

Notion

如何快速上手 Notion | Notion 入门教程

2019-9-2 21:08:07

53 条回复 A文章作者 M管理员
  1. 请问我想在一个 Date 里面设置了开始和结束日期,怎么统计之间的工期?

  2. 请教一下,怎么修改默认的时间格式,date出来的格式每次都要修改,还有创建时间的格式怎么修改的?

    • 每次都要修改,等官方更新。

  3. 你好,我想请教一下,如果我们date 栏里面的时间是有包含start date 和 end date 那么我们怎么计算之间时间跨度

    • datebetween(end(prop(Time)),start(prop(Time)),"days") 就可以了。

    • Linmi

      感谢 原来我少打了个括号 所以一直不成功

  4. 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")) + " 天"))

  5. 想问一下,实现生日倒计时的思路是怎么样的?比较麻烦的是,比如算出了一个人今年的生日,还没到和已经过了两种情况,后者的话算倒计时要算第二年了

    • 计算日期就好了。

  6. 你好,请问能否实现农历的日期纪念日记录及提醒?因为这个对于中国人来说作用很大~

  7. dateBetween(prop("Time"), now(), "days")
    我发现如果Time是今天或者明天都会显示0,…这样如果截止日期是明天,倒计时并不会显示还剩1天,而是还剩0天

  8. 建议再优化一下显示效果, 日期为空的时候不显示计时, 要不然很尴尬?
    ```
    empty(prop("Deadline")) ? "" : if(prop("Deadline") > now(), "? 还剩 " + format(dateBetween(prop("Deadline"), now(), "days")) + " 天", "? 已过 " + format(dateBetween(now(), prop("Deadline"), "days")) + " 天")
    ```

  9. 请问批量添加日期递进序列怎么做呀,比如表格里想看到2020-7-1到2020-7-30每天作为第一列。

    • 不支持,建议在 Excel 中拖拽好,粘贴进来。

    • Linmi

      哭了,Coda可以

    • date(2020,7,(1+RowId(thisRow)))就行,但是Coda没有notion好看……

  10. 您好,请问怎么计算两个日期之间的过去了多少天,而不是现在呢?

    • 再添加一个属性,或者使用函数里面的 endTime 与 startTime。

  11. 你好,我想问一下你的这个制作教程的gif图片是怎么制作的,需要那些工具

    • 软件是:gifox

  12. 请教一下,我在用if的时候,if(1 > 2, "yes", "no") == "no" 那个1>2里我设定了如果全部checkbox都点击了那么就显示yes.如果没点击全就显示no,可是我还有一个条件是当我设定的打卡时间不等于now()时间,我想显示空,这个怎么写啊

    • Notion 里面是有一个判断空的函数,empty()。写法的话:if(empty(), "Yes" , "No"),表述就是如果 Prop() 是空的,那么第一个就是显示空的结果,反之显示不是空的结果。

  13. 您好,用了您给的代码,但是请问这个emoji怎么替换呢?在代码中尝试更换,但是不知道怎么换成别的样式,谢谢

  14. 请问可以用秒倒计时嘛?

    • 可以,用 dateBetween(date, date2, "milliseconds")

  15. 都是少1天,教程里8月27日距12月31日是126天而不是125天,今天测试了下发现“后天”显示“还剩1天”,“前天”显示“过去1天”

    • 前一个语句+1天,解决了^_^

    • 前一个语句+1天 还是没明白,另外有直接加减乘除的代码有吗?

  16. 可以直接 Duplicate 楼主教程中的模板么

    • 完全可以,是开放的哈。

    • 完全可以,是开放的哈

  17. 请教下,倒计时那列能不能做到各行格式不一样,如添加不同的emoji。

    • 理论上可以,用 if 判断就好,不过很浪费时间。

  18. 纪念日提醒的功能可以实现吗?

    • 可以实现。

  19. 请问为什么在notion里找不到database这个模板啊

    • 第二个 GIF 教学怎么新建 Database

  20. 厉害了?

搜索