c# - 人类可读的日期格式

标签 c# .net date user-experience timespan

您可能已经注意到某些网络应用程序(例如 GMail 的某些部分)以比简单的 DD/MM/YYYY 更易于阅读的格式显示日期。

例如,如果我打开 23 日的邮件项目(在撰写本文时恰好是 3 天前,我将得到以下信息:

Dec 23 (3 days ago)

我想在我自己的网络应用程序中实现与此类似的逻辑。

例如,在处理 .NET TimeSpan 对象时,我想将其转换为如下文本:

2 months

3 days

是否已经有能够执行此操作的 .NET 库?

如果没有,我可能会构建一些基础的东西并将其开源。


我在这里做了一个基本的开始:

public static class TimeSpanHelpers
{
    public static string ToHumanReadableString(
        this TimeSpan timeSpan)
    {
        if (timeSpan.TotalDays > 30)
            return (timeSpan.TotalDays / 30) + " month(s)";

        if (timeSpan.TotalDays > 7)
            return (timeSpan.TotalDays / 7) + " week(s)";

        return (timeSpan.TotalDays) + " day(s)";
    }
}

最佳答案

试试 Humanizer http://humanizr.net/

TimeSpan.FromMilliseconds(1299630020).Humanize(3) => "2 weeks, 1 day, 1 hour"

// in de-DE culture
TimeSpan.FromDays(1).Humanize() => "Ein Tag"
TimeSpan.FromDays(2).Humanize() => "2 Tage"

// in sk-SK culture
TimeSpan.FromMilliseconds(1).Humanize() => "1 milisekunda"

// and a lot more
DateTime.UtcNow.AddHours(2).Humanize() => "2 hours from now"
"case".ToQuantity(5) => "5 cases"
"man".ToQuantity(2) => "2 men"
122.ToWords() => "one hundred and twenty-two"
(.5).Gigabytes().Humanize() => "512 MB"
"Long text to truncate".Truncate(10) => "Long text…",
"Sentence casing".Transform(To.TitleCase) => "Sentence Casing"

核心:

Install-Package Humanizer

关于c# - 人类可读的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1962798/

相关文章:

c# - Asp.net MVC 的从右到左 GridView

c# - SQL Server CE 4.0 和频繁损坏的内存崩溃

c# - 如何将委托(delegate)分配为某些已实现接口(interface)的方法

c# - 我无法使用 epplus 生成的 excel 将日期过滤为月、年、日期

java - 如何在 Java 中将字符串转换为日期时间

vba - 使用以下命令更改 Excel 中的日期格式

javascript - JavaScript 中的月份数组不漂亮

c# - 您如何管理大型应用程序的 .NET app.config 文件?

c# - ienumerable <字符串>到列表<字符串>

.net - 我应该推出我自己的 ParseInt32 版本吗?