yaml自定义时间的怎么范围查询

嗯嗯,可以了
可以再问最后一个问题吗?
如果:
范围不是某个标签,而是某个笔记下的所有反链。「该笔记下有很多的反链」
这样也可以实现吗?
再次感谢 :pray: :pray:

不清楚你想要的需求是否是:假设有笔记a.md,所有引用了a.md的笔记,且这些笔记的创建时间是今日之前或xxx-xxx之间,是这样吗?如果是,可以用如下方法:

```dataviewjs
//允许列表,只有在这个列表中的才被筛选(比如允许inlinks包含demo.md的文件等)
const allows = ["demo.md", "demo/demo2.md"];
//筛选数组类型的字段(比如tags等)
//const allowFiled = p => p.file.tags.values;
//筛选数组对象类型的字段(比如inlinks,outlinks等)
const allowFiled = p => p.file.outlinks.values.map(it=>it.path);
//其他字段也可以通过修改allowFiled函数实现

//判断是否允许的字段
const isAllow=(fields)=>allows.some(item=>fields.includes(item))

dv.header(3, '今日之前')
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) < new Date(new Date().setHours(0, 0, 0, 0))&&isAllow(allowFiled(p))).map(p=>p.file.link))

const start = '2024-01-01 00:00:00';
const end = '2024-01-02 23:59:59';
dv.header(3, `${start.substr(0, 10)} ~ ${end.substr(0, 10)} 之间`)
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) >= new Date(start)&&new Date(p.ctime) <= new Date(end)&&isAllow(allowFiled(p))).map(p=>p.file.link))
```

注意:这里对某笔笔记是内链的,可能对其他笔记是外链,可以尝试修改

const allowFiled = p => p.file.outlinks.values.map(it=>it.path); 中的outlinks或inlinks看哪种是你的需求。

如果你的需求是读取某文件(比如a.md)文件的所有反向链接即内链,然后把这些内链设为筛选条件,可以将上面代码的
const allows = ["demo.md", "demo/demo2.md"]; 修改为
const allows = dv.page("demo.md").file.inlinks.values.map(it=>it.path);

如果想支持多个文件的内链可以把const allows=[…] 修改为:
const allows = dv.pages('"demo.md" or "demo2.md"').values.map(p => p.file.outlinks.values.map(p => p.path)).flat(Infinity)

如果你的需求特别,那也可以把这些内链单独提取出来手动修改const allows=[…]

*不清楚你想要的需求是否是:假设有笔记a.md,所有引用了a.md的笔记,且这些笔记的创建时间是今日之前或xxx-xxx之间,是这样吗?

差不多是这样的,但是其他笔记都是yaml区引用a.md笔记的,类似其他笔记归类到a.md笔记。「我的笔记是用这种方式替代标签汇总」
然后我就想在这些笔记里:汇总今日之前或者xxx-xxx之间(时间是yaml自定义时间ctime)

哦,这样的话,上面代码,把const allows = [“demo.md”, “demo/demo2.md”]; 改为 const allows = [“a.md”]; 即可。

但我用你这个方法,没有出来想到的结果,能帮我看下是哪里出问题了吗?


结果
a笔记里都没有显示今天之前

里面的代码是:

不知道是哪里我弄错了 :rofl: :rofl:

看不出来,不要截图,发代码,方便调试和比较差异,b笔记日期不对,c笔记应该没问题,你试试这个

```dataviewjs
//允许列表,只有在这个列表中的才被筛选(比如允许inlinks包含demo.md的文件等)
const allows = ["a笔记.md"];
//筛选数组类型的字段(比如tags等)
//const allowFiled = p => p.file.tags.values;
//筛选数组对象类型的字段(比如inlinks,outlinks等)
const allowFiled = p => p.file.outlinks.values.map(it=>it.path);
//其他字段也可以通过修改allowFiled函数实现

//判断是否允许的字段
const isAllow=(fields)=>allows.some(item=>fields.includes(item))

dv.header(3, '今日之前')
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) < new Date(new Date().setHours(0, 0, 0, 0))&&isAllow(allowFiled(p))).map(p=>p.file.link))

const start = '2024-01-01 00:00:00';
const end = '2024-01-02 23:59:59';
dv.header(3, `${start.substr(0, 10)} ~ ${end.substr(0, 10)} 之间`)
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) >= new Date(start)&&new Date(p.ctime) <= new Date(end)&&isAllow(allowFiled(p))).map(p=>p.file.link))
```


这个是刚才试用的,这里不填"a笔记",而是填写c或者b笔记,那里都能显示


a笔记中有反链

b和c的笔记出链都是a笔记

嗯嗯,也不行,跟前次的情况一样,也是什么都没有出来

看这里

发你的代码,我试试,我这边和你的情况一样没问题

我就是用你的拷贝的 :rofl: :rofl:

```dataviewjs
const allows = dv.page("b笔记.md").file.outlinks.values.map(it=>it.path);
const allowFiled = p => p.file.outlinks.values.map(it=>it.path);


const isAllow=(fields)=>allows.some(item=>fields.includes(item))

dv.header(3, '今日之前')
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) < new Date(new Date().setHours(0, 0, 0, 0))&&isAllow(allowFiled(p))).map(p=>p.file.link))

这里b笔记改成c笔记,都能显示a笔记的反链。

你这样也可以,根据你自己的环境改吧,能实现就行,刚才同样的代码我这个没问题,光从图片也看不出来什么。

我这边环境:

image

image

嗯嗯,你这个正是我想要的效果 :rofl:

感谢感谢,真是麻烦你了 :pray: :pray:

今日之前不应该包含b,b的日期是今天,具体原因我也不清楚,建议在新仓库中,纯净环境中测试,这个需要根据自己情况去测试。

嗯嗯 我知道了,麻烦你了

没有改 :rofl: :rofl: :rofl:

谢谢,确实,那b日期就没问题了,不过,他的第一份代码,即下面这个,什么都筛选不到,不清楚什么原。

```dataviewjs
//允许列表,只有在这个列表中的才被筛选(比如允许inlinks包含demo.md的文件等)
const allows = ["a笔记.md"];
//筛选数组类型的字段(比如tags等)
//const allowFiled = p => p.file.tags.values;
//筛选数组对象类型的字段(比如inlinks,outlinks等)
const allowFiled = p => p.file.outlinks.values.map(it=>it.path);
//其他字段也可以通过修改allowFiled函数实现

//判断是否允许的字段
const isAllow=(fields)=>allows.some(item=>fields.includes(item))

dv.header(3, '今日之前')
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) < new Date(new Date().setHours(0, 0, 0, 0))&&isAllow(allowFiled(p))).map(p=>p.file.link))

const start = '2024-01-01 00:00:00';
const end = '2024-01-02 23:59:59';
dv.header(3, `${start.substr(0, 10)} ~ ${end.substr(0, 10)} 之间`)
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) >= new Date(start)&&new Date(p.ctime) <= new Date(end)&&isAllow(allowFiled(p))).map(p=>p.file.link))
```

不过,殊路同归,能解决问题就行。