关于asp.net:显示友好日期,数字

Display Friendly Date, Numbers

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I calculate relative time?

我正在搜索ASP.NET的自定义控件,它有助于显示用户友好的日期,例如,而不是文章日期:

(2—2010年4月)

它显示

(2个月大)

我在谷歌上找不到它,请任何人提出链接,自定义控件,文章相同。

谢谢您。


尝试此操作(这是日期时间扩展)。所以用法是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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;
            }

如果使用MVC 2,最好的方法(imho)是使用Richard的代码并通过一个DisplayTemplate将其连接起来(请查看此博客以开始显示模板:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html)。

…然后您只需使用以下语法从视图中调用displaytemplate:

<% =Html.DisplayFor(model => model.ArticleDate,"ArticleDateDisplayTemplateName") %>

我使用DisplayTemplates已经有一段时间了,它们一直是这种类型的东西的救命稻草,因为您可以在整个应用程序中使用它们。


好代码,理查德。

我还建议使用以下代码:http://www.codeproject.com/kb/datetime/dateodurationcalculation1.aspx。