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