我正在搜索asp.net的自定义控件,它有助于显示用户友好的日期,而不是文章日期:
(2月2010年)
显示
(2个月大)
我无法在谷歌上找到它,请任何人建议链接,自定义控件,相同的文章。
谢谢。
答案 0 :(得分:4)
试试这个(这是一个日期时间扩展名)。所以用法是:
var date = new DateTime.Now;
string formattedDate = date.ToReadableTimespan();
public static string ToReadableTimespan(this DateTime d)
{
// 1.
// Get time span elapsed since the date.
TimeSpan s = DateTime.Now.Subtract(d);
// 2.
// Get total number of days elapsed.
int dayDiff = (int)s.TotalDays;
// 3.
// Get total number of seconds elapsed.
int secDiff = (int)s.TotalSeconds;
// 4.
// Don't allow out of range values.
if (dayDiff < 0 || dayDiff >= 31)
{
return null;
}
// 5.
// Handle same-day times.
if (dayDiff == 0)
{
// A.
// Less than one minute ago.
if (secDiff < 60)
{
return "just now";
}
// B.
// Less than 2 minutes ago.
if (secDiff < 120)
{
return "1 minute ago";
}
// C.
// Less than one hour ago.
if (secDiff < 3600)
{
return string.Format("{0} minutes ago",
Math.Floor((double)secDiff / 60));
}
// D.
// Less than 2 hours ago.
if (secDiff < 7200)
{
return "1 hour ago";
}
// E.
// Less than one day ago.
if (secDiff < 86400)
{
return string.Format("{0} hours ago",
Math.Floor((double)secDiff / 3600));
}
}
// 6.
// Handle previous days.
if (dayDiff == 1)
{
return "yesterday";
}
if (dayDiff < 7)
{
return string.Format("{0} days ago",
dayDiff);
}
if (dayDiff < 31)
{
return string.Format("{0} weeks ago",
Math.Ceiling((double)dayDiff / 7));
}
return null;
}
答案 1 :(得分:0)
好的代码理查德。
我也想提出我使用的代码http://www.codeproject.com/KB/datetime/DateDurationCalculation1.aspx。
答案 2 :(得分:0)
如果使用MVC 2,最佳方法(恕我直言)将采用Richard的代码并通过DisplayTemplate
将其连接起来(请查看此博客以开始使用显示模板:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html)。< / p>
...然后您只需使用以下语法从View中调用DisplayTemplate:
<% =Html.DisplayFor(model => model.ArticleDate, "ArticleDateDisplayTemplateName") %>
我现在已经使用DisplayTemplates
一段时间了,因为你可以在整个应用程序中使用它们,所以它们一直都是救生员。