TimeSpan
дает вам продолжительность между двумя DateTime
объектами. Это может дать это последовательно в Днях, Часах или Минутах; Количество месяцев будет отличаться в зависимости от фактических дат начала и окончания, так как разные месяцы имеют разное количество фактических дней.
Сказав это, вы всегда можете написать метод Utility, который дает вам YourTimeSpan
объект, который дает вам количество месяцев и т. Д. На основе вашего календаря и StartDate / EndDates.
В вашем случае вы можете сделать это еще проще, сохранив его отдельно в конфигурации, например - ReportDuration_Years
, ReportDuration_Months
, ReportDuration_Days
. Это позволит вам создать значимую метку в отчете, а также позволит правильно идентифицировать StartDate и EndDate.
//Call this by passing values from configuration
private string GetNiceLookingLable(int? years, int? months, int? days){
var yearMessage = (years.HasValue)?String.Format("{0} Years", years):String.Empty;
var monthMessage = (months.HasValue)?String.Format("{0} Months", months):String.Empty;
var daysMessage = (days.HasValue)?String.Format("{0} Days", days):String.Empty;
// You probably want to concatenate them properly
return String.Format("{0} {1} {2}",yearMessage, monthMessage, daysMessage);
}
-
//Call this to get starting date
private DateTime getStartingDate(int? years, int? months,int? days){
var retDate = DateTime.Today;
if(years.HasValue){
retDate = retDate.AddYears(-1*years.Value);
}
if(months.HasValue){
retDate = retDate.AddMonths(-1*months.Value);
}
if(days.HasValue){
retDate = retDate.AddDays(-1*days.Value);
}
return retDate;
}