34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
namespace Iceshrimp.Backend.Core.Extensions;
|
|
|
|
public static class TimeSpanExtensions
|
|
{
|
|
private static readonly long Seconds = TimeSpan.FromMinutes(1).Ticks;
|
|
private static readonly long Minutes = TimeSpan.FromHours(1).Ticks;
|
|
private static readonly long Hours = TimeSpan.FromDays(1).Ticks;
|
|
|
|
public static long GetTotalMilliseconds(this TimeSpan timeSpan) => Convert.ToInt64(timeSpan.TotalMilliseconds);
|
|
|
|
public static string ToDisplayString(this TimeSpan timeSpan, bool singleNumber = true)
|
|
{
|
|
if (timeSpan.Ticks < Seconds)
|
|
{
|
|
var seconds = (int)timeSpan.TotalSeconds;
|
|
return seconds == 1 ? singleNumber ? "1 second" : "second" : $"{seconds} seconds";
|
|
}
|
|
|
|
if (timeSpan.Ticks < Minutes)
|
|
{
|
|
var minutes = (int)timeSpan.TotalMinutes;
|
|
return minutes == 1 ? singleNumber ? "1 minute" : "minute" : $"{timeSpan.TotalMinutes} minutes";
|
|
}
|
|
|
|
if (timeSpan.Ticks < Hours)
|
|
{
|
|
var hours = (int)timeSpan.TotalHours;
|
|
return hours == 1 ? singleNumber ? "1 hour" : "hour" : $"{hours} hours";
|
|
}
|
|
|
|
var days = (int)timeSpan.TotalDays;
|
|
return days == 1 ? singleNumber ? "1 day" : "day" : $"{timeSpan.TotalDays} days";
|
|
}
|
|
}
|