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://www.codeproject.com/kb/datetime/dateodurationcalculation1.aspx。