의도 한 출력 대상에 따라 jQuery 플러그인전에더 나은 옵션 일 수 있습니다.
다음을 만드는 HtmlHelper가 있습니다.<abbr />
요소를 포함하는ISO 8601타임 스탬프 :
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());
}
위의 도우미 출력을 페이지의 어딘가에있는 다음 자바 스크립트와 결합하면 돈을받을 수 있습니다.
<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();
});
현재 다음 확장 방법을 사용하고 있습니다. 그것이 밖으로 사용할 수있는 최고의 하나인지 확실하지 않습니다.
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";
}
도우미는 다음과 같이해야합니다.
public MvcHtmlString Timeago(this HtmlHelper helper, DateTime dateTime)
{
return MvcHtmlString.Create(dateTime.ToRelativeDate());
}
희망이 도움이됩니다!
time_ago_in_words
사람들이이 문제에 효과적으로 답변 할 수 있도록 도와주는 방향으로 나아갈 수있을 것입니다. 방법에 대한 세부 정보 포함당신그것을 사용하고 싶다.더 나은. - Shog9♦