DataTransfer/DataTransfer.Client/Services/DisplayFormat.cs
2026-10-15 20:09:11 +02:00

32 lines
No EOL
1.2 KiB
C#

using System.Globalization;
namespace DataTransfer.Client.Services;
public static class DisplayFormat
{
public static string Bytes(long bytes) => bytes switch
{
>= 1024L * 1024 * 1024 => string.Create(CultureInfo.InvariantCulture, $"{bytes / 1024d / 1024d / 1024d:0.#} GB"),
>= 1024 * 1024 => string.Create(CultureInfo.InvariantCulture, $"{bytes / 1024d / 1024d:0.0} MB"),
>= 1024 => string.Create(CultureInfo.InvariantCulture, $"{bytes / 1024d:0.0} KB"),
_ => $"{bytes} B"
};
public static string Duration(TimeSpan duration) =>
duration switch
{
{ TotalHours: >= 1, Minutes: 0, Seconds: 0 } => string.Create(CultureInfo.InvariantCulture, $"{duration.TotalHours:0} h"),
{ TotalMinutes: >= 1, Seconds: 0 } => string.Create(CultureInfo.InvariantCulture, $"{duration.TotalMinutes:0} min"),
_ => string.Create(CultureInfo.InvariantCulture, $"{duration.TotalSeconds:0} s")
};
public static string Countdown(TimeSpan remaining)
{
if (remaining < TimeSpan.Zero)
{
remaining = TimeSpan.Zero;
}
return remaining.ToString(remaining.TotalHours >= 1 ? @"h\:mm\:ss" : @"mm\:ss", CultureInfo.InvariantCulture);
}
}