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

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

因爲顯示的是中文友好時間格式,須要安裝 nuget 包 Humanizer.Core.zh-CN 。github

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

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

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

因爲我用的是英文操做系統,運行時顯示的是 spa

an hour ago

Humanize 方法提供了 culture 參數,能夠經過它設置爲中文操作系統

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

也能夠經過設置當前線程的 CurrentUICulture 實現.net

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") }
});
相關文章
相關標籤/搜索