1  #region 友好显示时间
 2         /// <summary>
 3         /// 友好显示时间
 4         /// </summary>
 5         /// <param name="date"></param>
 6         /// <returns></returns>
 7         public static string ShowTime(DateTime date)
 8         {
 9             const int SECOND = 1;
10             const int MINUTE = 60 * SECOND;
11             const int HOUR = 60 * MINUTE;
12             const int DAY = 24 * HOUR;
13             const int MONTH = 30 * DAY;
14             TimeSpan ts = DateTime.Now - date;
15             double delta = ts.TotalSeconds;
16             if (delta < 0)
17             {
18                 return "not yet";
19             }
20             if (delta < 1 * MINUTE)
21             {
22                 return ts.Seconds == 1 ? "1秒前" : ts.Seconds + "秒前";
23             }
24             if (delta < 2 * MINUTE)
25             {
26                 return "1分钟之前";
27             }
28             if (delta < 45 * MINUTE)
29             {
30                 return ts.Minutes + "分钟";
31             }
32             if (delta < 90 * MINUTE)
33             {
34                 return "1小时前";
35             }
36             if (delta < 24 * HOUR)
37             {
38                 return ts.Hours + "小时前";
39             }
40             if (delta < 48 * HOUR)
41             {
42                 return "昨天";
43             }
44             if (delta < 30 * DAY)
45             {
46                 return ts.Days + " 天之前";
47             }
48             if (delta < 12 * MONTH)
49             {
50                 int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
51                 return months <= 1 ? "一个月之前" : months + "月之前";
52             }
53             else
54             {
55                 int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
56                 return years <= 1 ? "一年前" : years + "年前";
57             }
58         }
59         #endregion