yaml怎么读取文件原始创建日期?

修改时间=文件最原始创建日期。

访问日期=管理器移动文件就会实时更新,而Obsidian把它当做文件创建日期。

修改日期=应该是文件查看就会实时更新。

我笔记库2024.9整体移动过一次(但修改时间依旧是2023年没变),导致现在老笔记(未加yaml)的用linter自动添加日期,读取写入的都是清一色访问日期(全都是2024.9月)

我感觉Obsidian引用时间是不是错的,Paste image rename插件改图片名时间也是引用的访问日期。

怎么才能让Obsidian引用最真实的文件创建日期呢?还是没权限?

Screenshot_20250530091047
Screenshot_20250530091147

MiXplorer文件管理器可以看到文件的三种日期,Obsidian引用时间这种感觉不符合逻辑,修改还早与创建。

这个是 Windows 文件资源管理器的(令人困惑的)【特性[1] ,不是 Obsidian 的问题。

在使用 Windows 文件资源管理器时,如果对文件或文件夹进行 复制加粘贴跨分区移动 的操作,就会产生文件或文件夹的【创建时间】 CreationTime变成” 操作发生的时间的现象。

此时,文件或文件夹的【原始创建时间】 CreationTime 已经被 【删除】了

如何补救创建时间被【删除】的后果?

  • 如果你没有在 【移动】笔记文件后,对笔记进行【修改】,那么笔记文件夹的【修改时间】等于【原始创建时间】。此时,你可以运行 PowerShell 命令来补救,比如运行 gi "笔记文件.md"|%{$f=$_; $f.CreationTime = $f.LastWriteTime;}
  • 如果你在 【移动】笔记文件后,对笔记进行过了【修改】,那么,很遗憾,【原始创建时间】无法恢复了

如何防止创建时间被【删除】?

  • 在想要 复制加粘贴跨分区移动 时,可以使用软件 FastCopy 来执行操作,这样就可以防止了创建时间被【删除】

  1. 硬盘文件图片迁移,如何防止自动改变文件的创建时间和修改时间@2021.07.22 - 知乎 ↩︎

我手机root了,用MiXplorer文件管理器移动/复制文件这个“修改时间”永远都不会变,各种文件管理器、相册时间排序都是用的这个时间,但是Obsidian却把这个永远不会变的时间当成“修改日期”,这个修改日期还早于Obsidian创建日期感觉就不符合大众逻辑。

如果你是跨操作系统地移动文件的话

(这里是具体的分析,点击查看)

你可能【混淆】了 Windows 文件系统 和 Linux 文件系统的【文件元数据】(手机的安卓系统是 Linux 系统)

安卓系统的文件没有 创建时间 - CreationTime 属性,Windows 系统的文件才有

【手机文件复制或移动到电脑】,Windows 就会将上传的时间作为文件的创建时间

【跨操作系统】文件传输有着这样【令人困惑】的特点

下面是两个操作系统的文件元数据的对比[1]

Windows 文件系统的文件时间属性元数据

  • 创建时间 - CreationTime
  • 最近修改时间 - LastWriteTime
  • 最近访问时间 - LastAccessTime

Linux 文件系统的文件时间属性元数据 (安卓系统的文件时间属性元数据)

  • 访问时间 - access time - 简写为 atime
  • 修改时间 - modify time - 简写为 mtime
  • 状态修改时间 - change time - 简写为 ctime (不是创建时间 creation time 的缩写)

  1. 准确获取linux文件的创建时间_linux文件创建时间-CSDN博客 ↩︎

回复1:任何时间属性都有可能改变,以安卓系统为例

  • 访问时间 - access time。会在文件读取时改变
  • 修改时间 - modify time。会在文件内容改变时改变
  • 状态修改时间 - change time。会在文件的元数据发生改变时改变,比如文件的权限、拥有者、所属的组、硬链接,当然也包括文件内容发生变化
  • 创建时间。Linux 文件系统不存在文件的创建时间,根本没有这个属性,连改变都谈不上

回复2:你可能混淆了时间属性

  • 手机端 Obsidian 可能是将 【状态修改时间 - change time】作为文件的创建时间
  • 并且,将【修改时间 - modify time】作为文件的修改时间
  • 所以,当移动或复制粘贴时,文件元数据变化而文件内容不变,导致【状态修改时间 - change time】变化而【修改时间 - modify time】不变
  • 从而,在 Obsidian 看来,【文件的创建时间变化】而【文件的修改时间不变】

总结

  • 安卓系统的文件【没有文件创建时间属性】,如果你不喜欢,可以使用 Windows 系统,Windows 系统的文件【有文件创建时间属性】

还是将就用吧,越分析越懵逼:rofl:

我想,我们应该将文件的创建时间写到 yaml frontmatter 里面,这样就不用担心文件的元数据发生丢失现象,特别是在跨文件系统、跨操作系统地进行文件拷贝和移动时发生丢失现象

笔记内容的例子

---
ctime-p: 2025-01-02T13:04:05.678Z
---

笔记内容