32 lines
No EOL
1.2 KiB
C#
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);
|
|
}
|
|
} |