C# Code to Calculate Relative Time

  1. const int SECOND = 1;  
  2. const int MINUTE = 60 * SECOND;  
  3. const int HOUR = 60 * MINUTE;  
  4. const int DAY = 24 * HOUR;  
  5. const int MONTH = 30 * DAY;  
  6.   
  7. var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);  
  8. double delta = Math.Abs(ts.TotalSeconds);  
  9.   
  10. if (delta < 1 * MINUTE)  
  11.   return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";  
  12.   
  13. if (delta < 2 * MINUTE)  
  14.   return "a minute ago";  
  15.   
  16. if (delta < 45 * MINUTE)  
  17.   return ts.Minutes + " minutes ago";  
  18.   
  19. if (delta < 90 * MINUTE)  
  20.   return "an hour ago";  
  21.   
  22. if (delta < 24 * HOUR)  
  23.   return ts.Hours + " hours ago";  
  24.   
  25. if (delta < 48 * HOUR)  
  26.   return "yesterday";  
  27.   
  28. if (delta < 30 * DAY)  
  29.   return ts.Days + " days ago";  
  30.   
  31. if (delta < 12 * MONTH)  
  32. {  
  33.   int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));  
  34.   return months <= 1 ? "one month ago" : months + " months ago";  
  35. }  
  36. else  
  37. {  
  38.   int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));  
  39.   return years <= 1 ? "one year ago" : years + " years ago";  
  40. }