思源笔记新建存放日记 年 / 月 / 周 / 日的路径设置分享

一、需求背景:从流水账到结构化复盘的归档逻辑

作为习惯用笔记软件记录生活的人,我希望实现这样的归档规则:

  • 每日随手记录流水账(按日期命名)
  • 每周汇总到对应周目录(按「年 / 月 + 周数」分级)
  • 每月生成月度总结(按月份聚合每周内容)

核心需求是新建日记时自动生成「年 / 月 / 周 / 日」层级路径。其中关键逻辑在于:如何定义「周」的归属?
我采用「周一作为每周第一天」的规则,并设计两种周数计算方式:

  1. 年相对周数:以自然年为周期,计算全年第 N 周(如 2025 年第 1 周从 1 月第一个周一算起)
  2. 月相对周数:以自然月为周期,计算当月第 N 周(如 2025 年 6 月第 1 周从 6 月首个周一算起)

年相对周数

image.png

月相对周数

image.png

二、两种周数计算逻辑与实现代码

▌ 方案一:年相对周数(全年第 N 周)

代码拆解:

{{$currentWeekday := mod (now|Weekday|add 6) 7}} // 当前星期几(0=周一,1=周二...6=周日) {{$mondayOfThisWeek := now.AddDate 0 0 (mul -1 $currentWeekday | int)}} // 本周一日期 {{$firstDayOfYear := parseTime (join "-" (list ($mondayOfThisWeek.Year|toString) "01-01"))}} // 本年第一天 {{$daysDifference := $mondayOfThisWeek.Sub $firstDayOfYear }} // 距离本年第一天的秒数差 {{$weekNumber := div (div $daysDifference.Seconds 86400 |int|add 7) 7}} // 本年第几周,本年的第一个周一起算第一周。 {{$yearMonthOfMonday := $mondayOfThisWeek| date "2006/01"}} //本周所属月份,按照本周周一所在月份计算。 本周所属月份{{$mondayOfThisWeek| date "2006/01"}} 本周是第{{$weekNumber}}周

合并在一起,新建日记的路径如下:

{{$currentWeekday := mod (now|Weekday|add 6) 7}} {{$mondayOfThisWeek := now.AddDate 0 0 (mul -1 $currentWeekday | int)}}{{$firstDayOfYear := parseTime (join "-" (list ($mondayOfThisWeek.Year|toString) "01-01"))}}{{$daysDifference := $mondayOfThisWeek.Sub $firstDayOfYear }}{{$weekNumber := div (div $daysDifference.Seconds 86400 |int|add 7) 7}}daily note/{{$mondayOfThisWeek| date "2006/01"}}/第{{$weekNumber}}周/{{now | date "2006-01-02"}}

在 TestTemplate 插件中测试效果如下:

image.png

▌ 方案二:月相对周数(当月第 N 周)

代码拆解:

{{$currentWeekday := mod (now|Weekday|add 6) 7}} // 当前星期几(0=周一,1=周二...6=周日) {{$mondayOfThisWeek := now.AddDate 0 0 (mul -1 $currentWeekday | int)}} // 本周一日期 {{$firstDayOfMonth := parseTime (join "-" (list ($mondayOfThisWeek | date "2006-01"|toString) "01"))}} // 本月的第一天 {{$daysDifference := $mondayOfThisWeek.Sub $firstDayOfMonth }} // 距离本月第一天的秒数差 {{$weekNumber := div (div $daysDifference.Seconds 86400 |int|add 7) 7}} // 本月第几周,本月的第一个周一起算第一周。 {{$yearMonthOfMonday := $mondayOfThisWeek| date "2006/01"}} //本周所属月份,按照本周周一所在月份计算。 本周所属月份{{$mondayOfThisWeek| date "2006/01"}} 本周是第{{$weekNumber}}周

合并在一起,新建日记的路径如下:

{{$currentWeekday := mod (now|Weekday|add 6) 7}} {{$mondayOfThisWeek := now.AddDate 0 0 (mul -1 $currentWeekday | int)}}{{$firstDayOfMonth := parseTime (join "-" (list ($mondayOfThisWeek | date "2006-01"|toString) "01"))}}{{$daysDifference := $mondayOfThisWeek.Sub $firstDayOfMonth }}{{$weekNumber := div (div $daysDifference.Seconds 86400 |int|add 7) 7}}{{$yearMonthOfMonday := $mondayOfThisWeek| date "2006/01"}}daily note/{{$mondayOfThisWeek| date "2006/01"}}/第{{$weekNumber}}周/{{now | date "2006-01-02"}}

在 TestTemplate 插件中测试效果如下:

image.png

三、参考文档

思源模板功能新人指南:模板语法 + 函数 + md 块语法

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26122 引用 • 108451 回帖
  • 日记
    71 引用 • 303 回帖 • 1 关注
  • 模板
    22 引用 • 118 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • zhenzhia via macOS

    现学现用的语法,实现的可能不是很优雅,欢迎评论区指正~

  • FlyingY

    为什么一定要第几周?到几月几日不是很好吗

    1 回复
  • zhenzhia via macOS

    就把它当工作日志来写,然后有个周报,所以每周得总结一下,然后月/日 这种布局就一个月就有三十天,有些周还会跨月,定位哪一周就有点费劲,找了半天没找到合适的,然后就因为这一点点鸡毛蒜皮需求折腾了一通 😂

  • pakeh2866

    感谢分享

    1 回复
  • daziduan

    @zhenzhia 感谢分享,也知道了一种模板插件。😄

    1 回复
  • zhenzhia via macOS

    不客气~

  • zhenzhia via macOS

    不客气~

  • Douby

    大佬,我也有想写日记的想法,就是那个自动生成会创建目录的,那个 daily note 如何让他变成中文,比如就变成日记。

    1 回复
  • zhenzhia via macOS

    这个替换就行,比如下面这个图把红色圈起来的部分替换成日记就行

    image.png

    2 回复
  • Douby

    谢谢大佬。我去下了那个插件,然后是直接往模版?里面粘贴吗
    形如(xxx 笔记本 ▽)(这里)
    😂 我一开始还想是不是什么开发者工具 ,我去找相关内容的改,想着修改函数,结果没相关内容。然后刚刚粗略看了看你发的参考,又看到了一个比较久远的帖子,发现原来我不需要周的话,可以很简单的改。但是貌似看到的版本不太一样,找了找,找到了。

    1 回复
  • zhenzhia via macOS

    这样呀,不需要周的话,默认的功能就可以用了。这个插件是测试模板语法的,没必要。

    image.png

    image.png

    然后你这样填就行了,结果是年/月/日的形式

    /日记/{{now | date "2006/01"}}/{{now | date "2006-01-02"}}

    然后如果有需要可以安装一下今日笔记这个插件,可以打开自动创建日记image.png

    2 回复
  • 2149270752

    大佬,请问这个页面是在哪里能打开呀

    1 回复
  • zhenzhia via macOS

    哪个页面?给个图

  • Douby

    恩,谢谢大佬。是的,直接在笔记(最外层)右击设置,改就行,一开始没想到 😂

  • xile799610 via macOS

    这个今日笔记 只有年月日 没有周度的拆分,能否增加周度的拆分

    1 回复
  • zhenzhia via macOS

    今日笔记 用的也是笔记本中设置的存放路径模板,把教程中的存放路径填进去就行了

    image.png

请输入回帖内容 ...