今天在將一個 .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") } });