using System;
public class Test
{
private static readonly string[] oneformats = {"{0:d}d", "{0:d}h", "{0:d}m", "{0:d}s"};
private static readonly string[] twoformats = {"{0:d}d {1:d}h", "{0:d}h {1:d}m", "{0:d}m {1:d}s"};
static string FormatRushTime (TimeSpan span, bool reportZero )
{
int[] times = new int[]{span.Days, span.Hours, span.Minutes, span.Seconds};
for (int i = 0; i < times.Length; i++)
{
if (times[i] != 0)
{
if (((i + 1) < times.Length) && (times[i+1] != 0 || reportZero))
{
return String.Format(twoformats[i], times[i], times[i+1]);
}
return String.Format(oneformats[i], times[i]);
}
}
return String.Empty;
}
private static void testPrint(TimeSpan span)
{
Console.WriteLine(String.Format("{0} - Zero: {1} NoZero: {2}", span,
FormatRushTime(span, false), FormatRushTime(span, true)));
}
public static void Main()
{
testPrint(new TimeSpan(123456789123));
testPrint(new TimeSpan(1,0,1,1));
testPrint(new TimeSpan(0,0,1,1));
testPrint(new TimeSpan(0,1,0,1));
testPrint(new TimeSpan(-1,1,0,1));
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgc3RyaW5nW10gb25lZm9ybWF0cyA9IHsiezA6ZH1kIiwgInswOmR9aCIsICJ7MDpkfW0iLCAiezA6ZH1zIn07Cglwcml2YXRlIHN0YXRpYyByZWFkb25seSBzdHJpbmdbXSB0d29mb3JtYXRzID0geyJ7MDpkfWQgezE6ZH1oIiwgInswOmR9aCB7MTpkfW0iLCAiezA6ZH1tIHsxOmR9cyJ9OwoJCgkKICAgIHN0YXRpYyBzdHJpbmcgRm9ybWF0UnVzaFRpbWUgKFRpbWVTcGFuIHNwYW4sIGJvb2wgcmVwb3J0WmVybyApCiAgICB7CiAgICAJaW50W10gdGltZXMgPSBuZXcgaW50W117c3Bhbi5EYXlzLCBzcGFuLkhvdXJzLCBzcGFuLk1pbnV0ZXMsIHNwYW4uU2Vjb25kc307CiAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lcy5MZW5ndGg7IGkrKykKICAgIAl7CiAgICAJCWlmICh0aW1lc1tpXSAhPSAwKQogICAgCQl7CiAgICAJCQlpZiAoKChpICsgMSkgPCB0aW1lcy5MZW5ndGgpICYmICh0aW1lc1tpKzFdICE9IDAgfHwgcmVwb3J0WmVybykpCiAgICAJCQl7CiAgICAJCQkJcmV0dXJuIFN0cmluZy5Gb3JtYXQodHdvZm9ybWF0c1tpXSwgdGltZXNbaV0sIHRpbWVzW2krMV0pOwogICAgCQkJfQogICAgCQkJcmV0dXJuIFN0cmluZy5Gb3JtYXQob25lZm9ybWF0c1tpXSwgdGltZXNbaV0pOwogICAgCQl9CiAgICAJfQogICAgCXJldHVybiBTdHJpbmcuRW1wdHk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdFByaW50KFRpbWVTcGFuIHNwYW4pCiAgICB7CiAgICAJQ29uc29sZS5Xcml0ZUxpbmUoU3RyaW5nLkZvcm1hdCgiezB9IC0gWmVybzogezF9ICBOb1plcm86IHsyfSIsIHNwYW4sCiAgICAJICAgICAgIEZvcm1hdFJ1c2hUaW1lKHNwYW4sIGZhbHNlKSwgRm9ybWF0UnVzaFRpbWUoc3BhbiwgdHJ1ZSkpKTsKICAgIH0KCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdGVzdFByaW50KG5ldyBUaW1lU3BhbigxMjM0NTY3ODkxMjMpKTsKCQl0ZXN0UHJpbnQobmV3IFRpbWVTcGFuKDEsMCwxLDEpKTsKCQl0ZXN0UHJpbnQobmV3IFRpbWVTcGFuKDAsMCwxLDEpKTsKCQl0ZXN0UHJpbnQobmV3IFRpbWVTcGFuKDAsMSwwLDEpKTsKCQl0ZXN0UHJpbnQobmV3IFRpbWVTcGFuKC0xLDEsMCwxKSk7Cgl9Cn0=