虎鲸笔记 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:00 | 2026-07-19 12:00(已过) | 用时 1 天 2 小时 0 分钟 |
| 2026-07-18 10:00 | 2026-07-20 12:00(未到) | 进行中,剩余 0 天 21 小时 0 分钟 |
| 2026-07-20 10:00 | 2026-07-21 12:00(全在未来) | 还有 0 天 19 小时 0 分钟开始 |
| 2026-07-18 10:00 | 空 | 已过 1 天 5 小时 0 分钟 |
| 2026-07-20 10:00 | 空 | 还有 0 天 19 小时 0 分钟开始 |
公式
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),"分钟")))) |
使用建议
开始时间:计划启动日期
结束时间:有值且 ≤ 现在时,自动视为「实际完成日」;有值且 > 现在时,自动视为「截止日期」
更多可能性
会议记录:距离下次会议还有多久
项目甘特图:任务处于什么阶段
习惯打卡:上次执行到现在过了几天
效果
