private string TimeSpanToFriendlyString(TimeSpan span)
{
var items = new List<string>();
Action<double, string> ifNotZeroAppend = (value, key) =>
{
if (value != 0)
items.Add(string.Concat(value, key));
};
ifNotZeroAppend(span.Days, "d");
ifNotZeroAppend(span.Hours, "h");
ifNotZeroAppend(span.Minutes, "m");
ifNotZeroAppend(span.Seconds, "s");
return string.Join("", items);
}