private enum TimeSpanElement { Millisecond, Second, Minute, Hour, Day } public static string ToFriendlyDisplay(this TimeSpan timeSpan, int maxNrOfElements = 3) { maxNrOfElements = Math.Max(Math.Min(maxNrOfElements, 5), 1); var parts = new[] { Tuple.Create(TimeSpanElement.Day, timeSpan.Days), Tuple.Create(TimeSpanElement.Hour, timeSpan.Hours), Tuple.Create(TimeSpanElement.Minute, timeSpan.Minutes), Tuple.Create(TimeSpanElement.Second, timeSpan.Seconds), Tuple.Create(TimeSpanElement.Millisecond, timeSpan.Milliseconds) } .SkipWhile(i => i.Item2 <= 0) .Take(maxNrOfElements); return string.Join(", ", parts.Select(p => string.Format("{0} {1}{2}", p.Item2, p.Item1, p.Item2 > 1 ? "s" : string.Empty))); }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter