Вы можете использовать метод расширения, чтобы получить значения, как это ...
public static class Extensions
{
public static List<MonthDaysData> GetWorkingDaysPerMonthTo(this DateTime from,
DateTime to)
{
var workings = new Dictionary<int, int>();
var currentDateTime = from;
while (currentDateTime <= to)
{
if (currentDateTime.DayOfWeek != DayOfWeek.Saturday
&& currentDateTime.DayOfWeek != DayOfWeek.Sunday
&& !currentDateTime.IsHoliday("CountryCode"))
if (!workings.ContainsKey(currentDateTime.Month))
workings.Add(currentDateTime.Month, 1);
else
{
int curWork;
workings.TryGetValue(currentDateTime.Month, out curWork);
curWork++;
workings.Remove(currentDateTime.Month);
workings.Add(currentDateTime.Month, curWork);
}
currentDateTime = currentDateTime.AddDays(1);
}
return workings.Select(work => new MonthDaysData {Month = work.Key,
days = work.Value}).ToList();
}
public static bool IsHoliday(this DateTime date, string countryCode)
{
// some service that takes a country code and
// returns true/false if its a holiday
return false;
}
}
Вы могли бы назвать его из любого места, как ...
var today = new DateTime(2014, 10, 16);
var dates = today.GetWorkingDaysPerMonthTo(new DateTime(2014, 12, 16));
Однако, это просто работает с будними днями в рабочие дни, вам нужно будет проверить праздничные дни и т. д.
Так почему бы не просто зациклиться от даты начала до конца, проверьте, праздник ли он или нет, и добавьте его в список, если это необходимо? Что вы пробовали до сих пор? –
также предоставляют определение MonthDaysData. – Mukund
общественный класс MonthDaysData { общественный Int32? Месяц {get; задавать; } общественный Int32? дней {получить; задавать; } } – Ram