C#/.NET讀取或修改文件的創(chuàng)建時(shí)間及修改時(shí)間詳解
前言
手工在博客中添加 Front Matter 文件頭可是個(gè)相當(dāng)費(fèi)事兒的做法,這種事情就應(yīng)該自動(dòng)完成。
.NET 中提供了非常方便的修改文件創(chuàng)建時(shí)間的方法,使用這種方法,能夠幫助自動(dòng)完成一部分文件頭的編寫或者更新。
相關(guān)類型
.NET 中提供了兩個(gè)不同的設(shè)置創(chuàng)建和修改時(shí)間的入口:
File 靜態(tài)類
FileInfo 類
▲ File 靜態(tài)類的方法
▲ FileInfo 類的方法
很明顯,使用 FileInfo 類可以使用屬性直接獲取和賦值,用法上會(huì)比 File 方便,不過需要一個(gè) FileInfo 的實(shí)例。
修改時(shí)間
我期待能夠讀取文件的創(chuàng)建和修改時(shí)間來獲知博客文章的發(fā)布和修改時(shí)間。不過在此之前,我需要先根據(jù) Markdown 文件元數(shù)據(jù)更新文件時(shí)間。
private void FixFileDate(FileInfo file, DateTimeOffset createdTime, DateTimeOffset modifiedTime) { // 更改文件的創(chuàng)建時(shí)間。 file.CreationTimeUtc = createdTime.UtcDateTime; // 更改文件的更新時(shí)間。 file.LastWriteTimeUtc = modifiedTime.UtcDateTime; // 更改文件最近一次訪問的時(shí)間。 file.LastAccessTimeUtc = DateTimeOffset.Now.UtcDateTime; }
至于如何獲取 Markdown 文件元數(shù)據(jù)中的時(shí)間,可以使用 YamlDotNet(當(dāng)然,需要自己提取 YAML 元數(shù)據(jù)頭)。
讀取時(shí)間
當(dāng)此后需要使用文件的創(chuàng)建時(shí)間來更新 YAML 元數(shù)據(jù)時(shí),只需要讀取這幾個(gè)屬性即可。
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 時(shí)間
也許你注意到以上我使用的時(shí)間類型都是 DateTimeOffset 而不是 DateTime,這是因?yàn)?DateTimeOffset 中記錄了時(shí)區(qū)信息,不至于在使用的過程中丟掉時(shí)區(qū)信息,出現(xiàn)重復(fù)時(shí)間轉(zhuǎn)換,發(fā)生時(shí)間錯(cuò)誤。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
設(shè)置ASP.NET頁面的運(yùn)行超時(shí)時(shí)間詳細(xì)到單個(gè)頁面及站點(diǎn)
這篇文章主要介紹了如何設(shè)置ASP.NET頁面的運(yùn)行超時(shí)時(shí)間,包括全局超時(shí)時(shí)間、單個(gè)站點(diǎn)超時(shí)時(shí)間、單個(gè)頁面請(qǐng)求超時(shí)時(shí)間,需要的朋友可以參考下2014-06-06Asp.Net Core添加請(qǐng)求頭自定義認(rèn)證的示例
這篇文章主要介紹了Asp.Net Core添加請(qǐng)求頭自定義認(rèn)證的示例,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04asp.net 獲取TreeView中第一個(gè)選中的節(jié)點(diǎn)
今天做的項(xiàng)目中有一個(gè)要獲取TreeView中第一個(gè)選中的節(jié)點(diǎn),當(dāng)然子節(jié)點(diǎn)己包含checkbox以前做過,用的時(shí)候又不知道怎么做了,花了點(diǎn)時(shí)間又寫了一下,記錄下來,以備下次用.2010-03-03.net客戶端導(dǎo)出Excel實(shí)現(xiàn)代碼及注意事項(xiàng)
將DataGrid導(dǎo)出為Excel文件及導(dǎo)出dgData中0-3列的數(shù)據(jù)到excel文件中的優(yōu)缺點(diǎn)介紹,感興趣的朋友可以了解下,希望本文對(duì)你有所幫助2013-02-02驗(yàn)證一個(gè)ASP.NET應(yīng)用程序和頁面的生命周期的實(shí)現(xiàn)代碼
我們知道ASP.NET Page的生命周期實(shí)際上是ASP.NET Application的生命周期的一部分。這個(gè)周期經(jīng)歷了HTTP Module => HTTP Handler => ASP.NET Page => Http Module這樣一個(gè)過程2012-04-04ASP.NET?Core框架探索之Authentication的權(quán)限認(rèn)證過程解析
這篇文章主要介紹了ASP.NET?Core框架探索之Authentication的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03