WorkTracker/Formatting/DurationFormatter.cs

37 lines
934 B
C#
Raw Normal View History

namespace WorkTracker.Formatting;
public static class DurationFormatter
{
public static string FormatHours(decimal value, bool blankWhenZero = false)
{
var totalMinutes = (int)Math.Round(value * 60m, MidpointRounding.AwayFromZero);
if (totalMinutes == 0)
{
return blankWhenZero ? string.Empty : "0";
}
var sign = totalMinutes < 0 ? "-" : string.Empty;
totalMinutes = Math.Abs(totalMinutes);
var hours = totalMinutes / 60;
var minutes = totalMinutes % 60;
return minutes == 0
? $"{sign}{hours}"
: $"{sign}{hours}:{minutes:00}";
}
public static string FormatSignedHours(decimal value)
{
if (value > 0m)
{
return $"+{FormatHours(value)}";
}
if (value < 0m)
{
return $"-{FormatHours(Math.Abs(value))}";
}
return "0";
}
}