.NET Core 中使用 Humanizer 顯示友好時間格式


今天在將一個 .net framework 項目遷移至 .net core 的過程中,在遷移到顯示友好時間格式(比如“1分鍾前”,“1小時前”)的代碼時,找了找看有沒有對應的開源庫,結果找到了 Humanizer ,順手體驗了一下,感覺不錯,在這篇隨筆中記錄一下。

由於顯示的是中文友好時間格式,需要安裝 nuget 包 Humanizer.Core.zh-CN 。

<ItemGroup>
  <PackageReference Include="Humanizer.Core.zh-CN" Version="2.6.2" />
</ItemGroup>

Humanizer 默認是基於 UTC 時間計算的,對於北京時間需要將 Humanize 方法的 utcDate 參數設置為 false

Console.WriteLine(DateTime.Now.AddHours(-1).Humanize(utcDate: false));

由於我用的是英文操作系統,運行時顯示的是 

an hour ago

Humanize 方法提供了 culture 參數,可以通過它設置為中文

Console.WriteLine(DateTime.Now.AddHours(-1).Humanize(utcDate:false, culture: new CultureInfo("zh-CN")));
$ dotnet run
1 小時前

也可以通過設置當前線程的 CurrentUICulture 實現

Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
Console.WriteLine(DateTime.Now.AddHours(-1).Humanize(utcDate:false));

對於 ASP.NET Core 項目,可以通過設置 localization middleware 實現

app.UseRequestLocalization(new RequestLocalizationOptions
{
    SupportedUICultures = new[] { new CultureInfo("zh-CN") }
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM