【问题标题】:Calculating relative dates using asp.net mvc使用 asp.net mvc 计算相对日期
【发布时间】:2011-04-10 14:07:44
【问题描述】:

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

【问题讨论】:

标签: c# .net asp.net-mvc date


【解决方案1】:

当一个简单的扩展方法可以做到时,你不需要一个库。这是我用过的扩展方法:

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));
}

Source Link

【讨论】:

  • 一位匿名用户提交了一个标题为Kelsey 的建议编辑,您能否修复以下代码:当 timeSince.TotalDays == 1.9243 时,它返回“1 天前”,提示“昨天”行有一个错误。它应该是评论而不是编辑,但我认为用户无法发布 cmets。
【解决方案2】:

timeago: a jQuery plugin

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

【讨论】:

  • 我个人会使用这个选项,它在客户端而不是服务器上完成繁重的工作,这对于流量很大的网站来说很重要。您不能缓存“分钟前”类型信息。
【解决方案3】:

Humanizer 是一个很棒的库。它在 nuget 上,除了日期之外,还包括许多其他出色的字符串和枚举转换。

https://github.com/MehdiK/Humanizer

【讨论】:

  • Humanizer 的 TimeSpan 存在错误。见here
【解决方案4】:

我不知道任何为此而存在的已建立库,但 http://tiredblogger.wordpress.com/2008/08/21/creating-twitter-esque-relative-dates-in-c/ 应该可以帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多