使用datetime声明一系列日期

时间:2017-06-22 13:30:23

标签: c# datetime logic date-range

我想知道设定日期范围的最佳方法。我有逻辑来检查特定记录的批准日期,并根据当天我在下次需要重新批准该记录时设置日期

因此,如果该记录在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));

有没有更好的方法来设置上面的日期时间变量?

3 个答案:

答案 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);
}