using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Model.Monitor
|
{
|
/// <summary>
|
/// 小时段
|
/// </summary>
|
public class HourSlot : JsonModel<HourSlot>, ICronSlot
|
{
|
/// <summary>
|
/// 是否从前一小时开始
|
/// </summary>
|
public bool Pre { get; set; } = false;
|
|
/// <summary>
|
/// 开始分钟 0-59
|
/// </summary>
|
public int Start { get; set; } = 0;
|
|
/// <summary>
|
/// 结束分钟 1-60
|
/// </summary>
|
public int End { get; set; } = 60;
|
|
/// <summary>
|
/// 验证
|
/// </summary>
|
/// <returns></returns>
|
public bool Verify()
|
{
|
if (this.Start < 0 || this.Start > 59)
|
return false;
|
if (this.End < 1 || this.End > 60)
|
return false;
|
var start = this.Start;
|
var end = this.End;
|
if (this.Pre)
|
{
|
end += 60;
|
}
|
if (end - start > 60)
|
return false;
|
if (end - start <= 0)
|
return false;
|
return true;
|
}
|
|
/// <summary>
|
/// 获取开始时间
|
/// </summary>
|
public DateTime GetStartTime(DateTime rhs)
|
{
|
var start = 0;
|
if (Verify())
|
{
|
start = this.Start;
|
if (Pre)
|
start = start - 60;
|
}
|
var dt = new DateTime(rhs.Year, rhs.Month, rhs.Day, rhs.Hour, 0, 0);
|
dt = dt.AddHours(-1);
|
dt = dt.AddSeconds(start);
|
return dt;
|
}
|
|
/// <summary>
|
/// 获取结束时间
|
/// </summary>
|
public DateTime GetEndTime(DateTime rhs)
|
{
|
var end = 60;
|
if (Verify())
|
end = this.End;
|
var dt = new DateTime(rhs.Year, rhs.Month, rhs.Day, rhs.Hour, 0, 0);
|
dt = dt.AddHours(-1);
|
dt = dt.AddSeconds(end);
|
return dt;
|
}
|
|
}
|
}
|