我有一個C#類作爲銷售報告引擎。所以基本上它取決於數據庫中的數據取決於用戶選擇的日期範圍。C#類選擇當前季度而不是上一季度的日期
用戶可以按兩種方式選擇日期 - 按特定日期範圍或按季度(即當前季度,上一季度)。
當系統移交給我們時,上一季度選項功能正常,但現在它只是獲取與當前季度相同的日期(我不確定爲什麼,本部分的源代碼沒有更改完全)。
我一直在尋找它的年齡試圖找出發生了什麼事情,因爲正如我所說,它確實在以前正常工作。我希望有一雙新鮮的眼睛可以幫助嗎?我通過代碼進行了調試,當我選擇GetPreviousQuarter時,它只計算GetCurrentQuarterDates。
下面是switch語句當用戶選擇按季度來查看信息被稱爲:
switch (reportRequest.SelectedPeriod)
{
case SalesReportRequest.SalesReportPeriod.Today: // Today
startDate = DateTime.Today;
endDate = DateTime.Today.Add(new TimeSpan(0, 23, 59, 59, 59));
break;
case SalesReportRequest.SalesReportPeriod.Yesterday:
startDate = DateTime.Today.AddDays(-1);
endDate = DateTime.Today.AddDays(-1).Add(new TimeSpan(0, 23, 59, 59, 59));
break;
case SalesReportRequest.SalesReportPeriod.Last7Days:
ReportDateRange dr3 = GetDatesOfLastSevenDays();
startDate = dr3.StartDate;
endDate = dr3.EndDate;
break;
case SalesReportRequest.SalesReportPeriod.CurrentQuarter: // Current Quarter.
ReportDateRange dr = GetDatesOfCurrentQuarter();
startDate = dr.StartDate;
endDate = dr.EndDate;
break;
case SalesReportRequest.SalesReportPeriod.PreviousQuarter: // Previous Quarter.
ReportDateRange dr1 = GetDatesOfPreviousQuarter();
startDate = dr1.StartDate;
endDate = dr1.EndDate;
break;
case SalesReportRequest.SalesReportPeriod.CurrentYear: // Current Year.
ReportDateRange dr2 = GetDatesOfCurrentYear();
startDate = dr2.StartDate;
endDate = dr2.EndDate;
break;
}
所以後來選擇了上一季度的選項時,GetDatesOfPreviousQuarter()被調用:
public ReportDateRange GetDatesOfPreviousQuarter()
{
var dtmValue = DateTime.Now;
return DatesOfQuarter(dtmValue);
}
這就要求DatesOfQuarter:
public ReportDateRange DatesOfQuarter(DateTime dtmValue)
{
var intQuarter = (int)Math.Ceiling(dtmValue.Month/3M);
var intLastMonthOfQuarter = intQuarter * 3;
var intFirstMonthOfQuarter = intLastMonthOfQuarter - 2;
var intLastDayOfQuarter = DateTime.DaysInMonth(dtmValue.Year, intLastMonthOfQuarter);
ReportDateRange dateRange = new ReportDateRange
{
StartDate = new DateTime(dtmValue.Year, intFirstMonthOfQuarter, 1),
EndDate = new DateTime(dtmValue.Year, intLastMonthOfQuarter, intLastDayOfQuarter)
};
return dateRange;
}
任何幫助我很欣賞,如果需要,我可以提供更多信息。
謝謝。
編輯:
只是因爲有些人問它:
public ReportDateRange GetDatesOfCurrentQuarter()
{
var dtmValue = DateTime.Now;
return DatesOfQuarter(dtmValue);
}
爲'GetDatesOfPreviousQuarter'和'DatesOfQuarter'看起來都正確,以我的代碼。你是否獲得了最初請求的正確的'reportRequest.SelectedPeriod'? – Stuart 2011-04-04 10:30:44
是的,在這個階段我已經將它檢查了近三倍,一切都應該如此。我確實嘗試了之前發佈的DateTime.Now.AddMonths(-3),這似乎挑出了正確的日期。仍然沒有解決它之前的工作方式的神祕感:S – 109221793 2011-04-04 10:33:45
評論刪除 - 忽略我...我瘋了 - 對不起!在這個代碼中有一些簡單的東西... – Stuart 2011-04-04 10:34:04