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

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

我就是用你的拷贝的 :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))
```

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

哦,我都没有留意改掉时间, :rofl:
这个应该没有问题吧
只要在ctime的时间范围内,按理应该都能筛选出来

我自己测试了下,只有
const allows = dv.page(“b笔记.md”).file.outlinks.values.map(it=>it.path)
或者
const allows = dv.page(“c笔记.md”).file.outlinks.values.map(it=>it.path)

才能显示
image
这种效果
:sweat_smile:

const allows = dv.page(“b笔记.md”).file.outlinks.values.map(it=>it.path)
或者
const allows = dv.page(“c笔记.md”).file.outlinks.values.map(it=>it.path)

这样就不就相当于 const allows = ["a笔记.md"];吗?我也很奇怪,你直接写为什么不行。

获取b或c的外链路径数组,它们的外链不就是a笔记嘛,所以我感觉你const allows = ["a笔记.md"];这条语句有问题,删除掉重写试试。

也可以这样,const allows = [dv.current().file.path];,避免手写意外,不过这样,代码就只能放到a笔记中执行。

不过,const allows = dv.page(“b笔记.md”).file.outlinks.values.map(it=>it.path),这种方式是不安全的,如果b还有其他外链容易产生意外。

还有一种安全的方式,是如下

const allows = dv.page("a笔记.md").file.inlinks.values.map(it=>it.path)
const allowFiled = p => [p.file.path];

但这种外层循环会遍历a所有的内链,理论上性能差那么可以忽略的一丢丢,人是无法感知的,除非你内链多的惊人。一般人不会这么多吧。 :rofl:

const allows = ['文件目录/a笔记.md']

这样应该清楚一些,就是说要写基于库的路径,而不是只写名字。

确实,这样更不容易产生歧义或误解,尤其对新手来说。

嗯嗯。好的,谢谢 :pray: :sweat_smile:

恩。好的,谢谢 :pray:

请问下这里的 DataviewJS 代码如何直接转成 JS 脚本?然后再runjs里运行呢!

最上面加上这个应该就可以了

const dv = DataviewAPI;


const dv = DataviewAPI;

dv.header(3, '今日之前')
dv.list(dv.pages().filter(p=>p.ctime&&new Date(p.ctime) < new Date(new Date().setHours(0, 0, 0, 0))).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)).map(p=>p.file.link))

是这样吗?可是汇聚出来的内容的话是在哪里显示的?