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. 請問,如果沒有設定日期的話,倒數日那格該怎麼設定讓它空白呢?

  2. 在计算时要有时和分这个应该怎么实现呢,比如时间9:00到10:30分,这个时间差是1小时30分,要把这个结果显示出来要怎么处理呢?谢谢

  3. 要处理这个问题,不复杂,但你要把你想要的拆分情况先列出来,然后把各个部分的if函数写出来,再组装。 举例,假设我有“截止日期”“实际完成日期”两个字段信息,那我的完整函数就是: if(empty(prop("截止日期"))==true," ",if(empty(prop("实际完成"))==true,if(dateBetween(prop("截止日期"),now(), "hours")now(),"还剩"+format(dateBetween(prop("截止日期"), now(), "days")+1)+ "天","逾期"+format(dateBetween(now(),prop("截止日期"), "days"))+ "天")),if(dateBetween(prop("实际完成"),prop("截止日期"), "days")==0,"如期完成",if(prop("实际完成")>prop("截止日期"),"逾期"+format(dateBetween(prop("实际完成"),prop("截止日期"), "days"))+ "天完成","提前"+format(dateBetween(prop("截止日期"),prop("实际完成"), "days")+1)+ "天完成"))))

  4. 优化: 如果“日期”栏是有endtime的,可以修改如下: if(end(prop("日期")) > now(), "还剩 " + format(dateBetween(end(prop("日期")), now(), "days")) + " 天", "已过 " + format(dateBetween(now(), end(prop("日期")), "days")) + " 天") 当然,也可以使用 start(prop("日期")替换end(prop("日期")

  5. 请问一下,我原本计划是,用datebetween来 计算一个任务的进行天数和剩余天数,但是发现一个问题: 比如:1月27日-1月28日 完成一个任务,但是当now() 计算当日时间时,比如当天是1月26日,那么datebetween会显示,进行天数为0天,剩余天数为1天 我原先想的正常状态是进行天数为-1天,剩余天数为2天。 就是感觉天数不太准确,有办法解决吗,感谢

  6. 非常感谢!

  7. 想请问【设置的时间 = 现在的时间,那么就是现在时间】这段要怎么写代码,我这个完全不会代码的小白,自己试了半天也没成功……

    • datebetween 现在时间,过去时间,两个时间相减等于 0

  8. 很有帮助~谢谢分享

  9. 您好,请问两个时间列,列A和列B都添加了日期和小时分钟,怎么使用函数统计出两列共花费了几年几个月个小时及分钟,尝试了很多次都不能成功,可能是没有找对方法。

    • 看看公式怎么写的?

  10. 我写做一个生日提醒,要怎么做?我的生日19900205,谢谢。

  11. "? 经过了" + format(dateBetween(now(), prop("时间"), "days")) + "天"

  12. "? 还剩" + format(dateBetween(prop("时间"), now(), "days")) + "天"

  13. 这些公式可以不在表格里使用吗?比如inline?

搜索