关于使用Dataviewjs构建自动化甘特图脚本过程中遇到的疑惑

遇到的问题

尝试在Obsidian里绘制甘特图进行项目进度管理。
普通输入方式,例如mermaid->gantt和gantt需要手动输入,长时间使用下来感觉比较繁琐。尝试寻找一种能够直接生成的办法。
受用户@lazyloong的启发,尝试使用dv.paragraph()对gantt部分进行渲染的方法。下面是我遇到的问题:
问题一:时间数据读取与处理
时间读取可以使用dv.pages().map(p=>p.file.cday)或dv.pages().map(p=>p.mday)读取创建时间和最新一次修改时间两个参数,前者可以作为开始时间,后者可以作为结束时间。读取没问题,但是读取出来的数据包含小时部分,即yyyy-MM-ddThh:mm:ss,这部分不去除的话就无法直接输入gantt部分。
目前的解决办法是分别读取cday.year,cday.month,cday.day三部分,随后重新构建日期。请问各位还有更优雅的方法吗?

问题二:gantt配置问题
在mermaid->gantt中,完整的进度条格式为name: state, start_date, end_date或name:state, start_date, during。参考@layeloong的代码,start_date和end_date可以使用${cday}输入,但是在实际的使用过程中发现,gantt不能同时读取两个时间。
效果为:

test: active, ${cday}, 2024-03-28

image

test: active, ${cday}, ${mday}

image

单独输出二者时间并无异常,因此问题可能出在gantt中,存疑。

问题三:时间排序问题

dv.pages(source).map(p=>p.file.cday)

可以返回所有文件(source)的创建日期,返回的结果是一个Dataview列表,但其中的内容并没有排序,为后续的索引带来困扰。请问各位有什么好方法吗?

还请各位多多指点!非常感谢!

致谢

感谢@lazyloong提供的思路与代码示例。

其他

其他类型的Gantt脚本: Automatic Gantt Chart from Obsidian Tasks & Dataview - Share & showcase - Obsidian Forum

问题一,以下 DataviewJS 代码显示当前文档创建日期,可参考:

dv.paragraph(moment(dv.current().file.cday.ts).format('YYYY-MM-DD'))

问题三,试下 JS 方法 .sort()

好的,非常感谢您的回复。
sort方法被证明是有效的;关于时间信息处理部分仍在学习。
再次感谢您的回复。