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