using System.Collections.Generic;
public static void Main()
Console.Write("HumanReadableTimeSpan ran for ");
Console.WriteLine(ToHumanReadableTimeSpan(1234567));
public static string ToHumanReadableTimeSpan(long milliseconds)
if (milliseconds == 0) return "0ms";
List<string> tsparts = new List<string>();
Action<int, string, int> add = (val, displayunit, zeroplaceholder) => { if (val > 0) tsparts.Add(string.Format("{0:DL}X".Replace("X", displayunit).Replace("L",zeroplaceholder.ToString()), val)); };
TimeSpan t = TimeSpan.FromMilliseconds(milliseconds);
add(t.Milliseconds, "ms",3);
return string.Join(" ", tsparts);