前言
手工在博客中添加 Front Matter 文件头可是个相当费事儿的做法,这种事情就应该自动完成。
.NET 中提供了非常方便的修改文件创建时间的方法,使用这种方法,能够帮助自动完成一部分文件头的编写或者更新。
相关类型
.NET 中提供了两个不同的设置创建和修改时间的入口:
File 静态类
FileInfo 类
▲ File 静态类的方法
▲ FileInfo 类的方法
很明显,使用 FileInfo 类可以使用属性直接获取和赋值,用法上会比 File 方便,不过需要一个 FileInfo 的实例。
修改时间
我期待能够读取文件的创建和修改时间来获知博客文章的发布和修改时间。不过在此之前,我需要先根据 Markdown 文件元数据更新文件时间。
private void FixFileDate(FileInfo file, DateTimeOffset createdTime, DateTimeOffset modifiedTime) { // 更改文件的创建时间。 file.CreationTimeUtc = createdTime.UtcDateTime; // 更改文件的更新时间。 file.LastWriteTimeUtc = modifiedTime.UtcDateTime; // 更改文件最近一次访问的时间。 file.LastAccessTimeUtc = DateTimeOffset.Now.UtcDateTime; }
至于如何获取 Markdown 文件元数据中的时间,可以使用 YamlDotNet(当然,需要自己提取 YAML 元数据头)。
读取时间
当此后需要使用文件的创建时间来更新 YAML 元数据时,只需要读取这几个属性即可。
UpdateMetaTime(file, file.CreationTimeUtc, file.LastWriteTimeUtc); void UpdateMetaTime(FileInfo file, DateTimeOffset publishDate, DateTimeOffset date) { var publishDateString = date.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss zz"); var dateString = date.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss zz"); // 省略更新 YAML 元数据。 }
关于 UTC 时间
也许你注意到以上我使用的时间类型都是 DateTimeOffset 而不是 DateTime,这是因为 DateTimeOffset 中记录了时区信息,不至于在使用的过程中丢掉时区信息,出现重复时间转换,发生时间错误。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对站长技术的支持。
MySQL作为世界上很受欢迎的开源数据库,管理维护工具非常多,除了系统自带的命令...
攻防世界 REVERSE 新手区/game 下载得到附件 用IDA32位打开 先找下main函数 找到...
先给大家展示下效果图,然后再给大家撸代码,效果图如下所示: 下面写一个简单的...
都说安卓程序员工资高、待遇好改变无数程序员职业生涯的 金三银四 已来 你的小目...
一.前言 .NET Core 3.0将会在 .NET Conf 大会上正式发布,截止今日发布了9个预览...
Frida框架逆向入门-第一篇 1、安装Frida 2、下载安装Frida-server 3、使用frida ...
Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 ...
前言 随着业务的拓展功能越来越多。把所有的功能都放在同一个服务下代码混合交错...
具体代码如下所示: uni.chooseVideo({count: 1,compressed: false,sourceType: ...
xml文件由序言,元素(空元素,非空元素)和杂项三部分组成。 序言的结构: xml...