Files
maat/Maat.Core/DateExtensions.cs
2024-04-03 17:35:09 +02:00

42 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Maat.Core
{
/// <summary>
/// Metodo estensione datetime:
///
/// Example usage:
/// DateTime now = DateTime.Now;
/// DateTime nearest5Minutes = now.Round(TimeSpan.FromMinutes(5));
/// DateTime floor5Minutes = now.Floor(TimeSpan.FromMinutes(5));
/// DateTime ceil5Minutes = now.Ceil(TimeSpan.FromMinutes(5));
/// </summary>
public static class DateExtensions
{
public static DateTime Round(this DateTime date, TimeSpan span)
{
long ticks = (date.Ticks + (span.Ticks / 2) + 1) / span.Ticks;
return new DateTime(ticks * span.Ticks);
}
public static DateTime Floor(this DateTime date, TimeSpan span)
{
long ticks = date.Ticks / span.Ticks;
return new DateTime(ticks * span.Ticks);
}
public static DateTime Ceil(this DateTime date, TimeSpan span)
{
long ticks = (date.Ticks + span.Ticks - 1) / span.Ticks;
return new DateTime(ticks * span.Ticks);
}
}
}