public static string ToMiniString( this TimeSpan span ) {
if( span.Ticks < 0 ) {
throw new ArgumentOutOfRangeException( "span", "ToMiniString cannot be used on negative time spans." );
}else if( span.TotalSeconds < 60 ) {
return String.Format( "{0}s", span.Seconds );
} else if( span.TotalMinutes < 60 ) {
return String.Format( "{0}m{1}s", span.Minutes, span.Seconds );
} else if( span.TotalHours < 48 ) {
return String.Format( "{0}h{1}m", (int)Math.Floor( span.TotalHours ), span.Minutes );
} else if( span.TotalDays < 15 ) {
return String.Format( "{0}d{1}h", span.Days, span.Hours );
} else {
return String.Format( "{0:0}w{1:0}d", Math.Floor( span.TotalDays / 7 ), Math.Floor( span.TotalDays ) % 7 );
}
}