I'm looking to achieve a time format that looks like this: 2d 4h remaining; or 1h 36m remaining; or 35s remaining, etc. So that it only displays the two largest values of time (this is how Clash of Clans and some other mobile games format wait times.)
Currently my code is below, but I'm wondering if there might be a shorter way to format the timespan in this manner? I'm not fully sure if String.Format
will work…
public string FormatRushTime ( System.TimeSpan span )
{
string t1;
string t2;
if ( span.Days > 0 )
{
t1 = span.ToString("%d") + "d";
t2 = span.Hours > 0 ? span.ToString("%h") + "h" : String.Empty;
}
else if ( span.Hours > 0 )
{
t1 = span.ToString("%h") + "h";
t2 = span.Minutes > 0 ? span.ToString("%m") + "m" : String.Empty;
}
else if ( span.Minutes > 0 )
{
t1 = span.ToString("%m") + "m";
t2 = span.Seconds > 0 ? span.ToString("%s") + "s" : String.Empty;
}
else if ( span.Seconds > 0 )
{
t1 = span.ToString("%s") + "s";
t2 = String.Empty;
}
else
{
t1 = String.Empty;
t2 = String.Empty;
}
return t1+" "+t2;
}