- using System; 
- using System.Globalization; 
- using System.Linq; 
- using System.Collections.Generic; 
-   
- public class Test 
- { 
-     public static string GetReadableTimespan(TimeSpan ts) 
-         { 
-             const int SECOND = 1; 
-             const int MINUTE = 60 * SECOND; 
-             const int HOUR = 60 * MINUTE; 
-             const int DAY = 24 * HOUR; 
-             const int MONTH = 30 * DAY; 
-             double delta = Math.Abs(ts.TotalSeconds); 
-   
-             if (delta < 0) 
-             { 
-                 return "not yet"; 
-             } 
-             if (delta < 1 * MINUTE) 
-             { 
-                 return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago"; 
-             } 
-             if (delta < 2 * MINUTE) 
-             { 
-                 return "a minute ago"; 
-             } 
-             if (delta < 45 * MINUTE) 
-             { 
-                 return ts.Minutes + " minutes ago"; 
-             } 
-             if (delta < 90 * MINUTE) 
-             { 
-                 return "an hour ago"; 
-             } 
-             if (delta < 24 * HOUR) 
-             { 
-                 return ts.Hours + " hours ago"; 
-             } 
-             if (delta < 48 * HOUR) 
-             { 
-                 return "yesterday"; 
-             } 
-             if (delta < 30 * DAY) 
-             { 
-                 return ts.Days + " days ago"; 
-             } 
-             if (delta < 12 * MONTH) 
-             { 
-                 int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30)); 
-                 return months <= 1 ? "one month ago" : months + " months ago"; 
-             } 
-             else 
-             { 
-                 int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365)); 
-                 return years <= 1 ? "one year ago" : years + " years ago"; 
-             } 
-         } 
-   
- 	public static void Main() 
- 	{ 
-        string[] strTimeSpans = new[]{"00hr:00min:17sec","00hr:03min:18sec","00hr:05min:25sec","01hr:39min:44sec"}; 
-             TimeSpan[] timespans = strTimeSpans 
-                 .Select(s => { 
-                     var parts = s.Split(':'); 
-                     int hour = int.Parse(parts[0].Substring(0, 2)); 
-                     int min = int.Parse(parts[1].Substring(0, 2)); 
-                     int sec = int.Parse(parts[2].Substring(0, 2)); 
-                     return new TimeSpan(hour, min, sec); 
-                 }).ToArray(); 
-   
-             foreach (TimeSpan ts in timespans) 
-                 Console.WriteLine(GetReadableTimespan(ts)); 
- 	} 
- }