Files
sbox-public/engine/Sandbox.System/Extend/DateTimeExtensions.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

80 lines
2.1 KiB
C#

namespace Sandbox;
public static partial class SandboxSystemExtensions
{
static DateTime epoch = new DateTime( 1970, 1, 1, 0, 0, 0, DateTimeKind.Utc );
/// <summary>
/// Returns the UNIX time stamp - number of seconds since 1st of January, 1970.
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public static int GetEpoch( this DateTime d )
{
var t = d - epoch;
return (int)(t.TotalSeconds);
}
/// <summary>
/// Converts UNIX time stamp to a DateTime object.
/// </summary>
/// <param name="seconds">UNIX time stamp in seconds.</param>
public static DateTime ToDateTime( this int seconds )
{
return epoch.AddSeconds( seconds );
}
/// <inheritdoc cref="ToDateTime(int)"/>
public static DateTime ToDateTime( this long seconds )
{
return epoch.AddSeconds( seconds );
}
public static string ToRelativeTimeString( this DateTime dateTime )
{
var span = DateTime.Now - dateTime;
return span.ToRelativeTimeString();
}
/// <summary>
/// Convert date into a human readable relative time string.
/// </summary>
public static string Humanize( this DateTime dateTime )
{
return Humanizer.DateHumanizeExtensions.Humanize( dateTime );
}
/// <summary>
/// Convert date into a human readable relative time string.
/// </summary>
public static string Humanize( this DateTimeOffset dateTime )
{
return Humanizer.DateHumanizeExtensions.Humanize( dateTime );
}
/// <summary>
/// Convert date into a human readable relative time string.
/// </summary>
public static string Humanize( this TimeOnly dateTime )
{
return Humanizer.DateHumanizeExtensions.Humanize( dateTime );
}
/// <summary>
/// Convert date into a human readable relative time string.
/// </summary>
public static string Humanize( this DateOnly dateTime )
{
return Humanizer.DateHumanizeExtensions.Humanize( dateTime );
}
/// <summary>
/// Convert date into a human readable relative time string.
/// </summary>
public static string Humanize( this TimeSpan dateTime, int precision = 1 )
{
return Humanizer.TimeSpanHumanizeExtensions.Humanize( dateTime, precision, minUnit: Humanizer.Localisation.TimeUnit.Second );
}
}