C#/.NET讀取或修改文件的創(chuàng)建時間及修改時間詳解
前言
手工在博客中添加 Front Matter 文件頭可是個相當(dāng)費(fèi)事兒的做法,這種事情就應(yīng)該自動完成。
.NET 中提供了非常方便的修改文件創(chuàng)建時間的方法,使用這種方法,能夠幫助自動完成一部分文件頭的編寫或者更新。
相關(guān)類型
.NET 中提供了兩個不同的設(shè)置創(chuàng)建和修改時間的入口:
File 靜態(tài)類
FileInfo 類

▲ File 靜態(tài)類的方法

▲ FileInfo 類的方法
很明顯,使用 FileInfo 類可以使用屬性直接獲取和賦值,用法上會比 File 方便,不過需要一個 FileInfo 的實(shí)例。
修改時間
我期待能夠讀取文件的創(chuàng)建和修改時間來獲知博客文章的發(fā)布和修改時間。不過在此之前,我需要先根據(jù) Markdown 文件元數(shù)據(jù)更新文件時間。
private void FixFileDate(FileInfo file, DateTimeOffset createdTime, DateTimeOffset modifiedTime)
{
// 更改文件的創(chuàng)建時間。
file.CreationTimeUtc = createdTime.UtcDateTime;
// 更改文件的更新時間。
file.LastWriteTimeUtc = modifiedTime.UtcDateTime;
// 更改文件最近一次訪問的時間。
file.LastAccessTimeUtc = DateTimeOffset.Now.UtcDateTime;
}
至于如何獲取 Markdown 文件元數(shù)據(jù)中的時間,可以使用 YamlDotNet(當(dāng)然,需要自己提取 YAML 元數(shù)據(jù)頭)。
讀取時間
當(dāng)此后需要使用文件的創(chuàng)建時間來更新 YAML 元數(shù)據(jù)時,只需要讀取這幾個屬性即可。
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 元數(shù)據(jù)。
}
關(guān)于 UTC 時間
也許你注意到以上我使用的時間類型都是 DateTimeOffset 而不是 DateTime,這是因?yàn)?DateTimeOffset 中記錄了時區(qū)信息,不至于在使用的過程中丟掉時區(qū)信息,出現(xiàn)重復(fù)時間轉(zhuǎn)換,發(fā)生時間錯誤。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
ASP.NET的適配器設(shè)計(jì)模式(Adapter)應(yīng)用詳解
有關(guān)設(shè)計(jì)模式的適配器模式(Adapter)確實(shí)不是很好理解理解,接下來將做一個簡單的例子簡要說明下,感興趣的朋友可不要錯過了哈,希望本文可以幫助到你更好的理解適配器設(shè)計(jì)模式2013-02-02
ASP.NET Core學(xué)習(xí)之使用JWT認(rèn)證授權(quán)詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET Core學(xué)習(xí)之使用JWT認(rèn)證授權(quán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
使用grpcui測試ASP.NET core的gRPC服務(wù)
這篇文章介紹了使用grpcui測試ASP.NET core gRPC服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
ASP.NET 頁面刷新的實(shí)現(xiàn)方法(包括html,js)
ASP.NET 頁面刷新的實(shí)現(xiàn)方法,比較全了, 包括html與js下的實(shí)現(xiàn)方法。2010-03-03
.Net Core路由處理的知識點(diǎn)與方法總結(jié)
這篇文章主要給大家介紹了關(guān)于.Net Core路由處理的知識點(diǎn)與方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

