C# 使用asp.net mvc计算相对日期

C# 使用asp.net mvc计算相对日期,c#,.net,asp.net-mvc,date,C#,.net,Asp.net Mvc,Date,对于在C#中使用的ASP.NET MVC,显示相对日期(例如:20分钟前)的最佳库是什么?我不知道有任何已建立的库用于此,但应该让您开始使用。如果一个简单的扩展方法可以做到这一点,您不需要库。这是我使用的一种扩展方法: public static string TimeAgo(this DateTime date) { TimeSpan timeSince = DateTime.Now.Subtract(date); if (timeSince.TotalMilliseconds

对于在C#中使用的ASP.NET MVC,显示相对日期(例如:20分钟前)的最佳库是什么?

我不知道有任何已建立的库用于此,但应该让您开始使用。

如果一个简单的扩展方法可以做到这一点,您不需要库。这是我使用的一种扩展方法:

public static string TimeAgo(this DateTime date)
{
    TimeSpan timeSince = DateTime.Now.Subtract(date);
    if (timeSince.TotalMilliseconds < 1) return "not yet"; 
    if (timeSince.TotalMinutes < 1) return "just now";
    if (timeSince.TotalMinutes < 2) return "1 minute ago";
    if (timeSince.TotalMinutes < 60) return string.Format("{0} minutes ago", timeSince.Minutes);
    if (timeSince.TotalMinutes < 120) return "1 hour ago";
    if (timeSince.TotalHours < 24) return string.Format("{0} hours ago", timeSince.Hours);
    if (timeSince.TotalDays < 2) return "yesterday";
    if (timeSince.TotalDays < 7) return string.Format("{0} days ago", timeSince.Days); 
    if (timeSince.TotalDays < 14) return "last week";
    if (timeSince.TotalDays < 21) return "2 weeks ago";
    if (timeSince.TotalDays < 28) return "3 weeks ago";
    if (timeSince.TotalDays < 60) return "last month";
    if (timeSince.TotalDays < 365) return string.Format("{0} months ago", Math.Round(timeSince.TotalDays / 30));
    if (timeSince.TotalDays < 730) return "last year"; //last but not least...
    return string.Format("{0} years ago", Math.Round(timeSince.TotalDays / 365));
}
public静态字符串TimeAgo(此DateTime日期)
{
TimeSpan timeSince=DateTime.Now.Subtract(日期);
如果(timeSince.totalmillizes<1)返回“尚未”;
如果(timeSince.TotalMinutes<1)返回“刚才”;
如果(timeSince.TotalMinutes<2)返回“1分钟前”;
if(timeSince.TotalMinutes<60)返回string.Format(“{0}分钟前”,timeSince.minutes);
如果(timeSince.TotalMinutes<120)返回“1小时前”;
if(timeSince.TotalHours<24)返回string.Format(“{0}小时前”,timeSince.hours);
如果(timeSince.TotalDays<2)返回“昨天”;
if(timeSince.TotalDays<7)返回string.Format(“{0}天前”,timeSince.days);
如果(timeSince.TotalDays<14)返回“上周”;
如果(timeSince.TotalDays<21)返回“2周前”;
如果(timeSince.TotalDays<28)返回“3周前”;
如果(timeSince.TotalDays<60)返回“上个月”;
if(timeSince.TotalDays<365)返回string.Format(“{0}个月前”,Math.Round(timeSince.TotalDays/30));
如果(timeSince.TotalDays<730)返回“去年”;//最后但并非最不重要。。。
返回string.Format(“{0}年前”,Math.Round(timeSince.TotalDays/365));
}

这个怎么样?
但这是jQuery插件。不是c#。

人性化是一个非常棒的图书馆。它在nuget上,除了日期之外,还包括许多其他伟大的字符串和枚举转换


可能重复匿名用户提交的标题为Kelsey的建议编辑,您能否修复以下代码:当timeSince.TotalDays==1.9243时,返回“1天前”,提示“昨天”行存在错误。它应该是一个评论,而不是一个编辑,但我认为用户不能发表评论。我个人会使用这个选项,它在客户端而不是服务器上完成繁重的工作,这对于流量很大的站点来说很重要。您无法缓存“分钟前”类型的信息。Humanizer在TimeSpan方面存在漏洞。看见