我想知道设定日期范围的最佳方法。我有逻辑来检查特定记录的批准日期,并根据当天我在下次需要重新批准该记录时设置日期
因此,如果该记录在1月或2月获得批准,如果其在3月份获得批准,则应在3月份重新评估,应在6月重新评估。
我现在宣布我的范围是这样的,但我认为这不是最好的方法
DateTime quarterOneStart = new DateTime(DateTime.Now.Year,07,01);
DateTime quarterOneEnd = new DateTime(DateTime.Now.Year, 09, 15));
DateTime quarterTwoStart = new DateTime(DateTime.Now.Year, 10, 01);
DateTime quarterTwoEnd = new DateTime(DateTime.Now.Year, 12, 15));
DateTime quarterThreeStart = new DateTime(DateTime.Now.Year, 01, 01);
DateTime quarterThreeEnd = new DateTime(DateTime.Now.Year, 03, 15));
DateTime quarterFourStart = new DateTime(DateTime.Now.Year, 04, 01);
DateTime quarterFourEnd = new DateTime(DateTime.Now.Year, 06, 15));
有没有更好的方法来设置上面的日期时间变量?
答案 0 :(得分:4)
季度课程
怎么样?{'shop_views': [{'count': '1', 'view_id': 'ACTOB'}{'count': '2', 'view_id': 'BANDDIES'}, {'count': '3', 'view_id': 'SpareNCLathe'}]}
并使用它
public class Quarter {
private readonly DateTime _startDate;
private readonly DateTime _endDate;
public Quarter(DateTime startDate, DateTime endDate) {
_startDate = startDate;
_endDate = endDate;
}
public DateTime StartDate => _startDate;
public DateTime EndDate => _endDate;
}
答案 1 :(得分:0)
您可以创建由Dictionary
键入的enum
项目,而不是创建多个变量。例如:
public enum Quaters
{
Q1_Start,
Q1_End,
Q2_Start,
Q2_End,
Q3_Start,
Q3_End,
Q4_Start,
Q4_End
}
Dictionary<Quaters, DateTime> dateRange = new Dictionary<Quaters, DateTime>
{
{Quaters.Q1_Start, new DateTime(DateTime.Now.Year, 07, 01)},
{Quaters.Q1_End, new DateTime(DateTime.Now.Year, 09, 15)},
{Quaters.Q2_Start, new DateTime(DateTime.Now.Year, 10, 01)},
{Quaters.Q2_End, new DateTime(DateTime.Now.Year, 12, 15)},
...
};
当您需要针对任何范围参数验证值时,您可以根据键索引dateRange
字典。这只是一个提案,可以为您的实际问题提供更好的解决方案。
答案 2 :(得分:0)
在过去,我编写了一个FinancialYear类,它在内部持有一个startYear(int)变量并提供各种方法/属性,例如: (除其他外)
public DateTime StartDate
{
get { return new DateTime(_startYear, 4, 1); } // April 1st
}
public static FinancialYear ForDate(DateTime dt)
{
DateTime finYearStart = new DateTime(dt.Year, 4, 1);
return (dt >= finYearStart) ? new FinancialYear(dt.Year) : new FinancialYear(dt.Year - 1);
}