.NET Core 中使用 Humanizer 显示友好时间格式
Posted dudu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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") );
以上是关于.NET Core 中使用 Humanizer 显示友好时间格式的主要内容,如果未能解决你的问题,请参考以下文章
谈谈在.NET Core中使用Redis和Memcached的序列化问题
.net core系列之《.net core中使用MySql以及Dapper》