Files
egwcorelib/EgwCoreLib.Utils/DtUtils.cs
T
Samuele Locatelli be80f179d7 Aggiunto LastYear
2023-06-28 14:52:57 +02:00

117 lines
3.8 KiB
C#

namespace EgwCoreLib.Utils
{
public class DtUtils
{
#region Public Enums
public enum PeriodSet
{
Select = 0,
Today,
Yesterday,
LastMonth,
LastTrim,
LastWeek,
LastYear,
ThisMonth,
ThisTrim,
ThisWeek,
ThisYear
}
#endregion Public Enums
#region Public Classes
public class Periodo
{
#region Public Constructors
public Periodo()
{ }
public Periodo(DateTime inizio, DateTime fine)
{
this.Inizio = inizio;
this.Fine = fine;
}
public Periodo(PeriodSet tipo)
{
int endMonth = 0;
DateTime oggi = DateTime.Today;
switch (tipo)
{
case DtUtils.PeriodSet.Today:
this.Inizio = oggi;
this.Fine = oggi.AddDays(1);
break;
case DtUtils.PeriodSet.Yesterday:
this.Inizio = oggi.AddDays(-1);
this.Fine = oggi;
break;
case DtUtils.PeriodSet.LastMonth:
this.Inizio = new DateTime(oggi.Year, oggi.Month, 1).AddMonths(-1);
this.Fine = new DateTime(oggi.Year, oggi.Month, 1);
break;
case DtUtils.PeriodSet.LastTrim:
// calcolo trimestre da mese...
endMonth = (int)Math.Ceiling((float)oggi.Month / 3) * 3;
this.Fine = new DateTime(oggi.Year, endMonth, 1).AddMonths(-2);
this.Inizio = this.Fine.AddMonths(-3);
break;
case DtUtils.PeriodSet.LastYear:
this.Inizio = new DateTime(oggi.Year-1, 1, 1);
this.Fine = new DateTime(oggi.Year , 1, 1);
break;
case DtUtils.PeriodSet.LastWeek:
this.Inizio = oggi.StartOfWeek(DayOfWeek.Monday).AddDays(-7);
this.Fine = this.Inizio.AddDays(7);
break;
case DtUtils.PeriodSet.ThisMonth:
this.Inizio = new DateTime(oggi.Year, oggi.Month, 1);
this.Fine = new DateTime(oggi.Year, oggi.Month + 1, 1);
break;
case DtUtils.PeriodSet.ThisTrim:
// calcolo trimestre da mese...
endMonth = (int)Math.Ceiling((float)oggi.Month / 3) * 3;
this.Fine = new DateTime(oggi.Year, endMonth, 1).AddMonths(1);
this.Inizio = this.Fine.AddMonths(-3);
break;
case DtUtils.PeriodSet.ThisWeek:
this.Inizio = oggi.StartOfWeek(DayOfWeek.Monday);
this.Fine = this.Inizio.AddDays(7);
break;
case DtUtils.PeriodSet.ThisYear:
this.Inizio = new DateTime(oggi.Year, 1, 1);
this.Fine = new DateTime(oggi.Year + 1, 1, 1);
break;
case DtUtils.PeriodSet.Select:
default:
break;
}
}
#endregion Public Constructors
#region Public Properties
public DateTime Fine { get; set; } = DateTime.Today.AddDays(+1);
public DateTime Inizio { get; set; } = DateTime.Today;
#endregion Public Properties
}
#endregion Public Classes
}
}