Files
jinko.yikatong/Src/Dlhis.Basic/BusinessShift/TimePeriodExtensions.cs

74 lines
2.0 KiB
C#

using Kurisu.Core.CustomClass;
namespace Dlhis.Basic.BusinessShift;
/// <summary>
/// 临时的扩展类 todo: 嵌入框架
/// </summary>
public static class TimePeriodExtensions
{
public static bool IsDuplicate1(this TimePeriod current, TimePeriod period)
{
return !Check();
bool Check()
{
if (current.IsCrossDay())
{
if (period.IsCrossDay())
{
return true;
}
else
{
return period.Start > current.End && period.End < current.Start;
}
}
else
{
if (period.IsCrossDay())
{
return period.Start > current.End && period.End < current.Start;
}
else
{
return period.Start > current.End || period.End < current.Start;
}
}
}
}
public static bool IsPresent1(this TimePeriod period, DateTime dateTime)
{
DateTime start;
DateTime end;
if (period.IsCrossDay())
{
var currentStart = DateTime.Today.Add(period.Start.Value.ToTimeSpan());
var endOfDay = DateTime.Today.AddHours(23).AddMinutes(59).AddSeconds(59);
if (dateTime >= currentStart && dateTime <= endOfDay)
{
start = DateTime.Today.Add(period.Start.Value.ToTimeSpan());
end = DateTime.Today.AddDays(1).Add(period.End.Value.ToTimeSpan());
}
else
{
//第二天
start = DateTime.Today.AddDays(-1).Add(period.Start.Value.ToTimeSpan());
end = DateTime.Today.Add(period.End.Value.ToTimeSpan());
}
}
else
{
start = DateTime.Today.Add(period.Start.Value.ToTimeSpan());
end = DateTime.Today.Add(period.End.Value.ToTimeSpan());
}
return dateTime >= start && dateTime <= end;
}
}