Time to Since Function เหมือนกับ Facebook ด้วย C#


เอาไว้แสดงค่าจาก CreatedDate หรือ UpdatedDate เพื่อบอกว่า Update ผ่านมาแล้วเป็นเวลาเท่าไร่ เหมือนกับ Facebook 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.   
  5. namespace KOOOOB  
  6. {  
  7.     public static class TimeToSince  
  8.     {  
  9.         public static string ToTimeSinceString(DateTime value)  
  10.         {  
  11.             const int SECOND = 1;  
  12.             const int MINUTE = 60 * SECOND;  
  13.             const int HOUR = 60 * MINUTE;  
  14.             const int DAY = 24 * HOUR;  
  15.             const int MONTH = 30 * DAY;  
  16.   
  17.             TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - value.Ticks);  
  18.             double seconds = ts.TotalSeconds;  
  19.   
  20.             if (seconds < 1 * MINUTE)  
  21.                 return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";  
  22.   
  23.             if (seconds < 60 * MINUTE)  
  24.                 return ts.Minutes <= 1 ? "one minute ago" : ts.Days + " minutes ago";  
  25.   
  26.             if (seconds < 120 * MINUTE)  
  27.                 return "an hour ago";  
  28.   
  29.             if (seconds < 24 * HOUR)  
  30.                 return ts.Hours <= 1 ? "one hour ago" : ts.Days + " hours ago";  
  31.   
  32.             if (seconds < 48 * HOUR)  
  33.                 return "yesterday";  
  34.   
  35.             if (seconds < 30 * DAY)  
  36.                 if (ts.Days >= 7)  
  37.                 {  
  38.                     double days = Math.Ceiling((double)ts.Days / 7);  
  39.                     return days <= 1 ? "one week ago" : days + " weeks ago";  
  40.                 }  
  41.                 else  
  42.                 {  
  43.                     return ts.Days <= 1 ? "one day ago" : ts.Days + " days ago";  
  44.   
  45.                 } // end if  
  46.   
  47.   
  48.             if (seconds < 12 * MONTH)  
  49.             {  
  50.                 int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));  
  51.                 return months <= 1 ? "one month ago" : months + " months ago";  
  52.               
  53.             } // end if  
  54.   
  55.             int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));  
  56.             return years <= 1 ? "one year ago" : years + " years ago";  
  57.   
  58.         }
  59.   
  60.   
  61.     } // end class
  62.   
  63. // end namespace    

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

FancyBox not work in UpdatePanel

Convert float to int

Get QueryString from JavaScript