49 lines
No EOL
1.7 KiB
C#
49 lines
No EOL
1.7 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace Geekbot.Bot.Utils
|
|
{
|
|
public class DateLocalization
|
|
{
|
|
public static string FormatDateTimeAsRemaining(DateTimeOffset dateTime)
|
|
{
|
|
var remaining = dateTime - DateTimeOffset.Now;
|
|
const string formattable = "{0} {1}";
|
|
var sb = new StringBuilder();
|
|
|
|
if (remaining.Days > 0)
|
|
{
|
|
sb.AppendFormat(formattable, remaining.Days, GetSingularOrPlural(remaining.Days, Localization.Internal.Days));
|
|
}
|
|
|
|
if (remaining.Hours > 0)
|
|
{
|
|
if (sb.Length > 0) sb.Append(", ");
|
|
sb.AppendFormat(formattable, remaining.Hours, GetSingularOrPlural(remaining.Hours, Localization.Internal.Hours));
|
|
}
|
|
|
|
if (remaining.Minutes > 0)
|
|
{
|
|
if (sb.Length > 0) sb.Append(", ");
|
|
sb.AppendFormat(formattable, remaining.Minutes, GetSingularOrPlural(remaining.Minutes, Localization.Internal.Minutes));
|
|
}
|
|
|
|
if (remaining.Seconds > 0)
|
|
{
|
|
if (sb.Length > 0)
|
|
{
|
|
sb.AppendFormat(" {0} ", Localization.Internal.And);
|
|
}
|
|
sb.AppendFormat(formattable, remaining.Seconds, GetSingularOrPlural(remaining.Seconds, Localization.Internal.Seconds));
|
|
}
|
|
|
|
return sb.ToString().Trim();
|
|
}
|
|
|
|
private static string GetSingularOrPlural(int number, string rawString)
|
|
{
|
|
var versions = rawString.Split('|');
|
|
return number == 1 ? versions[0] : versions[1];
|
|
}
|
|
}
|
|
} |