首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net mvc前段时间在words助手中

asp.net mvc前段时间在words助手中
EN

Stack Overflow用户
提问于 2011-03-14 16:44:19
回答 2查看 7.7K关注 0票数 18

可能重复:

How do I calculate relative time?

是否有类似于rails的time_ago_in_words asp.net帮助器的asp.net MVC?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-14 17:15:26

根据您预期的输出目标,jQuery插件Timeago可能是更好的选择。

下面是一个HtmlHelper来创建一个包含ISO 8601时间戳的<abbr />元素:

代码语言:javascript
复制
public static MvcHtmlString Timeago(this HtmlHelper helper, DateTime dateTime) {
    var tag = new TagBuilder("abbr");
    tag.AddCssClass("timeago");
    tag.Attributes.Add("title", dateTime.ToString("s") + "Z");
    tag.SetInnerText(dateTime.ToString());

    return MvcHtmlString.Create(tag.ToString());
}

将上述助手的输出与页面上的以下JavaScript组合在一起,您就会赚到钱了。

代码语言:javascript
复制
<script src="jquery.min.js" type="text/javascript"></script>
<script src="jquery.timeago.js" type="text/javascript"></script>

jQuery(document).ready(function() {
  jQuery("abbr.timeago").timeago();
});
票数 25
EN

Stack Overflow用户

发布于 2011-03-14 18:54:34

我目前正在使用以下扩展方法。不知道这是否是最好的。

代码语言:javascript
复制
public static string ToRelativeDate(this DateTime dateTime)
{
    var timeSpan = DateTime.Now - dateTime;

    if (timeSpan <= TimeSpan.FromSeconds(60))
        return string.Format("{0} seconds ago", timeSpan.Seconds);

    if (timeSpan <= TimeSpan.FromMinutes(60))
        return timeSpan.Minutes > 1 ? String.Format("about {0} minutes ago", timeSpan.Minutes) : "about a minute ago";

    if (timeSpan <= TimeSpan.FromHours(24))
        return timeSpan.Hours > 1 ? String.Format("about {0} hours ago", timeSpan.Hours) : "about an hour ago";

    if (timeSpan <= TimeSpan.FromDays(30))
        return timeSpan.Days > 1 ? String.Format("about {0} days ago", timeSpan.Days) : "yesterday";

    if (timeSpan <= TimeSpan.FromDays(365))
        return timeSpan.Days > 30 ? String.Format("about {0} months ago", timeSpan.Days / 30) : "about a month ago";

    return timeSpan.Days > 365 ? String.Format("about {0} years ago", timeSpan.Days / 365) : "about a year ago";
}

帮手应该是这样的:

代码语言:javascript
复制
public MvcHtmlString Timeago(this HtmlHelper helper, DateTime dateTime) 
{
    return MvcHtmlString.Create(dateTime.ToRelativeDate());
}

希望能帮上忙!

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5301609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档