dataviewjs把元数据中的字符串解析成日期

今天在使用dataviewjs时发现元数据中的一个字符串总是解析错误,然后进行了一些测试,发现下面的问题。


问题描述

正常情况

首先假如在一个test文件的元数据中有一个id字段,类型为文本,值为“123456”
image
另一个文件里写dataviewjs代码,输出是正常的

dv.paragraph(dv.page("test").id)

image

异常情况

test文件中的id值为“123456d”
image
dataviewjs的输出是日期,而不是“123456d”,经过测试发现结尾字符为’w’、‘s’、‘h’、‘m’时都会出现这种现象。
image
如果在文本的其它地方还有字母的话会正常输出原字符串,但是如果前面都是数字,只有最后一个字符是’w’、‘s’、‘d’、‘h’或’m’,都会被dataviewjs解析为日期。

使用的obsidian版本为v1.8.10,dataview版本为0.5.68,测试时已关闭其它所有主题和插件。

预期的效果

因为我的数据中正好有一个id是前面全是数字,最后一个字符是’d’,我希望dataviewjs能够正确地把它当成一个字符串,而不是解析成日期。

已尝试的解决方案

尝试了在源码模式中,把id的值加上双引号,但是结果没有变化。

用 obsidian 的api来实现。

let id = app.metadataCache.getFileCache(
    app.metadataCache.getFirstLinkpathDest("test")
).frontmatter.id;

dv.paragraph(id);

dataview的文档里面提到了会把哪些格式看做特定的类型:
https://blacksmithgu.github.io/obsidian-dataview/annotation/types-of-metadata/#duration

1 个赞