虎鲸笔记利用日期的计算属性践行任务管理

虎鲸笔记 v1.86.0,标签的计算属性支持日期计算了。

本文仅展示一种可能性:通过「开始时间」「结束时间」两个时间戳属性使用「计算属性」生成任务的状态描述,以践行任务管理。

核心思路

三个字段:

  • 开始时间(日期与时间类型)

  • 结束时间(日期与时间类型)

  • 状态(计算类型)

完整逻辑(六种情况)

开始时间结束时间当前时间关系显示结果
任意未设置
有值有值,且 ≤ 现在已结束用时 X 天 X 小时 X 分钟
有值(≤ 现在)有值,且 > 现在进行中,有截止日进行中,剩余 X 天 X 小时 X 分钟
有值(> 现在)有值(> 现在)全在未来还有 X 天 X 小时 X 分钟开始
有值(≤ 现在)已开始,无截止日已过 X 天 X 小时 X 分钟
有值(> 现在)尚未开始还有 X 天 X 小时 X 分钟开始

实际效果预览

开始时间结束时间显示结果
2026-07-20未设置
2026-07-18 10:002026-07-19 12:00(已过)用时 1 天 2 小时 0 分钟
2026-07-18 10:002026-07-20 12:00(未到)进行中,剩余 0 天 21 小时 0 分钟
2026-07-20 10:002026-07-21 12:00(全在未来)还有 0 天 19 小时 0 分钟开始
2026-07-18 10:00已过 1 天 5 小时 0 分钟
2026-07-20 10:00还有 0 天 19 小时 0 分钟开始

公式

Text
1
IF(DATETIME([开始时间])=0,"未设置",IF(DATETIME([结束时间])!=0,IF(DATETIME([结束时间])<=DATETIME("now"),CONCAT("用时",((DATETIME([结束时间])-DATETIME([开始时间]))/86400)-(((DATETIME([结束时间])-DATETIME([开始时间]))/86400)%1),"天",(((DATETIME([结束时间])-DATETIME([开始时间]))%86400)/3600)-((((DATETIME([结束时间])-DATETIME([开始时间]))%86400)/3600)%1),"小时",(((DATETIME([结束时间])-DATETIME([开始时间]))%3600)/60)-((((DATETIME([结束时间])-DATETIME([开始时间]))%3600)/60)%1),"分钟"),IF(DATETIME([开始时间])<=DATETIME("now"),CONCAT("进行中,剩余",((DATETIME([结束时间])-DATETIME("now"))/86400)-(((DATETIME([结束时间])-DATETIME("now"))/86400)%1),"天",(((DATETIME([结束时间])-DATETIME("now"))%86400)/3600)-((((DATETIME([结束时间])-DATETIME("now"))%86400)/3600)%1),"小时",(((DATETIME([结束时间])-DATETIME("now"))%3600)/60)-((((DATETIME([结束时间])-DATETIME("now"))%3600)/60)%1),"分钟"),CONCAT("还有",((DATETIME([开始时间])-DATETIME("now"))/86400)-(((DATETIME([开始时间])-DATETIME("now"))/86400)%1),"天",(((DATETIME([开始时间])-DATETIME("now"))%86400)/3600)-((((DATETIME([开始时间])-DATETIME("now"))%86400)/3600)%1),"小时",(((DATETIME([开始时间])-DATETIME("now"))%3600)/60)-((((DATETIME([开始时间])-DATETIME("now"))%3600)/60)%1),"分钟"))),IF(DATETIME([开始时间])<=DATETIME("now"),CONCAT("已过",((DATETIME("now")-DATETIME([开始时间]))/86400)-(((DATETIME("now")-DATETIME([开始时间]))/86400)%1),"天",(((DATETIME("now")-DATETIME([开始时间]))%86400)/3600)-((((DATETIME("now")-DATETIME([开始时间]))%86400)/3600)%1),"小时",(((DATETIME("now")-DATETIME([开始时间]))%3600)/60)-((((DATETIME("now")-DATETIME([开始时间]))%3600)/60)%1),"分钟"),CONCAT("还有",((DATETIME([开始时间])-DATETIME("now"))/86400)-(((DATETIME([开始时间])-DATETIME("now"))/86400)%1),"天",(((DATETIME([开始时间])-DATETIME("now"))%86400)/3600)-((((DATETIME([开始时间])-DATETIME("now"))%86400)/3600)%1),"小时",(((DATETIME([开始时间])-DATETIME("now"))%3600)/60)-((((DATETIME([开始时间])-DATETIME("now"))%3600)/60)%1),"分钟"))))

使用建议

  • 开始时间:计划启动日期

  • 结束时间:有值且 ≤ 现在时,自动视为「实际完成日」;有值且 > 现在时,自动视为「截止日期」

更多可能性

  • 会议记录:距离下次会议还有多久

  • 项目甘特图:任务处于什么阶段

  • 习惯打卡:上次执行到现在过了几天

效果