ace/Source/ACE.Common/Extensions/TimeSpanExtensions.cs
Ty Conner 1872067e43
Update EmoteManager Replace (#2498)
* Support QuestManager on Creatures

* Update QuestManager.cs

* Update QuestManager.cs

* Update EmoteManager.cs

* Update AdminCommands.cs

* Add support for MyQuest and Decrement

* Update EmoteManager.cs

* Add qst stamp

* switch to lazy load

* adding support for Creature.QuestManager

* numTimesCompleted

* adding logging

* Add support for %mqt

* Support %mlqt usage

* Update EmoteManager.cs
2019-12-05 23:56:24 -06:00

65 lines
2.5 KiB
C#

using System;
using System.Text;
namespace ACE.Common.Extensions
{
public static class TimeSpanExtensions
{
public static string GetFriendlyString(this TimeSpan timeSpan)
{
// use datetime here?
// this probably won't work with numDays...
//var numYears = timeSpan.GetYears();
//var numMonths = timeSpan.GetMonths();
var numDays = timeSpan.ToString("%d");
var numHours = timeSpan.ToString("%h");
var numMinutes = timeSpan.ToString("%m");
var numSeconds = timeSpan.ToString("%s");
var sb = new StringBuilder();
// did retail display months/years?
//if (numYears > 0) sb.Append(numYears + "y ");
//if (numMonths > 0) sb.Append(numMonths + "mo ");
if (numDays != "0") sb.Append(numDays + "d ");
if (numHours != "0") sb.Append(numHours + "h ");
if (numMinutes != "0") sb.Append(numMinutes + "m ");
if (numSeconds != "0") sb.Append(numSeconds + "s ");
return sb.ToString().Trim();
}
public static string GetFriendlyLongString(this TimeSpan timeSpan)
{
var numDays = timeSpan.ToString("%d");
var numHours = timeSpan.ToString("%h");
var numMinutes = timeSpan.ToString("%m");
var numSeconds = timeSpan.ToString("%s");
var sb = new StringBuilder();
if (numDays != "0") sb.Append(numDays + $" day{((timeSpan.Days > 1) ? "s" : "")} ");
if (numHours != "0") sb.Append($"{((numDays != "0") ? ", " : "")}" + numHours + $" hour{((timeSpan.Hours > 1) ? "s" : "")} ");
if (numMinutes != "0") sb.Append($"{((numDays != "0" || numHours != "0") ? ", " : "")}" + numMinutes + $" minute{((timeSpan.Minutes > 1) ? "s" : "")} ");
if (numSeconds != "0") sb.Append($"{((numDays != "0" || numHours != "0" || numMinutes != "0") ? "and " : "")}" + numSeconds + $" second{((timeSpan.Seconds > 1) ? "s" : "")} ");
return sb.ToString().Trim();
}
public static uint SecondsPerMonth = 60 * 60 * 24 * 30; // 30-day estimate
public static uint SecondsPerYear = 60 * 60 * 24 * 365; // non-leap year
public static uint GetMonths(this TimeSpan timeSpan)
{
return (uint)timeSpan.TotalSeconds / SecondsPerMonth;
}
public static uint GetYears(this TimeSpan timeSpan)
{
return (uint)timeSpan.TotalSeconds / SecondsPerYear;
}
}
}