2017-06-22 34 views
0

我想知道設置日期範圍的最佳方法。我有邏輯檢查某一條記錄被批准的日期,並基於當天我在下一次該記錄需要重新批准時設置日期用日期時間聲明日期範圍

因此,如果記錄在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

如果第一季度在9月中旬結束,第二季度開始於10月初,9月下旬會發生什麼情況? – mjwills

+0

這些記錄將不得不在12月重新評估 – artbarzz

+0

不應該在九月底的一個季度結束嗎?道歉,如果這是一個愚蠢的問題。 – mjwills

回答

4

什麼類四分之一

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; 
} 

,並用它

Quarter one = new Quarter(new DateTime(2017, 07, 01), new DateTime(2017, 09, 15)); 
Quarter two = new Quarter(new DateTime(2017, 09, 15), new DateTime(2017, 10, 01)); 
... 
0

而不是創建多個變量,您可以創建由enum key'ed項目的Dictionary。例如:

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字典任何範圍參數的值。這只是一個建議,對於您的實際問題可能會有更好的解決方案。

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