using JNPF.DependencyInjection;
namespace JNPF.Common.Extension;
///
/// 时间类型的扩展辅助操作类.
///
[SuppressSniffer]
public static partial class Extensions
{
#region 时间判断
///
/// 判断时间是否在某个时间段内.
///
/// 数据时间.
/// 查询开始时间.
/// 查询结束时间.
/// 0-yyyy-MM-dd,1-yyyy-MM,2-yyyy.
///
public static bool IsInTimeRange(DateTime nowTime, string beginHm, string endHm, int type = 0)
{
DateTime start = new DateTime();
DateTime end = new DateTime();
switch (type)
{
case 1:
{
DateTime beginTime = beginHm.ParseToDateTime();
DateTime endTime = endHm.ParseToDateTime();
start = new DateTime(beginTime.Year, beginTime.Month, 1, 0, 0, 0, 0);
end = new DateTime(endTime.Year, endTime.Month, DateTime.DaysInMonth(endTime.Year, endTime.Month), 23, 59, 59, 999);
}
break;
case 2:
{
DateTime beginTime = beginHm.ParseToDateTime();
DateTime endTime = endHm.ParseToDateTime();
start = new DateTime(beginTime.Year, 1, 1, 0, 0, 0, 0);
end = new DateTime(endTime.Year, 12, 31, 23, 59, 59, 999);
}
break;
case 0:
{
DateTime beginTime = beginHm.ParseToDateTime();
DateTime endTime = endHm.ParseToDateTime();
start = new DateTime(beginTime.Year, beginTime.Month, beginTime.Day, 0, 0, 0, 0);
end = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59, 999);
}
break;
case 3:
{
DateTime beginTime = beginHm.ParseToDateTime();
DateTime endTime = endHm.ParseToDateTime();
start = new DateTime(beginTime.Year, beginTime.Month, beginTime.Day, beginTime.Hour, beginTime.Minute, beginTime.Second, 0);
end = new DateTime(endTime.Year, endTime.Month, endTime.Day, endTime.Hour, endTime.Minute, endTime.Second, 999);
}
break;
}
if (ParseToUnixTime(nowTime) >= ParseToUnixTime(start) && ParseToUnixTime(nowTime) <= ParseToUnixTime(end))
return true;
return false;
}
///
/// 时间判断.
///
/// 数据时间.
/// 查询开始时间.
/// 查询结束时间.
///
public static bool timeCalendar(string nowTime, string dayTimeStart, string dayTimeEnd)
{
// 设置当前时间
DateTime date = nowTime.ParseToDateTime();
// 设置开始时间
DateTime timeStart = dayTimeStart.ParseToDateTime();
timeStart = new DateTime(timeStart.Year, timeStart.Month, timeStart.Day, 0, 0, 0, 0);
// 设置结束时间
DateTime timeEnd = dayTimeEnd.ParseToDateTime();
timeEnd = new DateTime(timeEnd.Year, timeEnd.Month, timeEnd.Day, 23, 59, 59, 999);
// 当date > timeStart时,date.CompareTo(timeStart)返回 1
// 当date = timeStart时,date.CompareTo(timeStart)返回 0
// 当date < timeStart时,date.CompareTo(timeStart)返回 -1
if (DateTime.Compare(date, timeStart) >= 0 && DateTime.Compare(date, timeEnd) <= 0)
return true;
return false;
}
#endregion
}