Вы могли уговорить своего администратора сети на установку домена для Вас (скажите 'evilpuppetmaster.hell'), и наличие подстановочного знака там так, чтобы все (*.evilpuppetmaster.hell') решило к Вашему IP
Ну, вам нужно будет перебрать их так или иначе. Я предпочитаю определять такой метод:
public IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
{
for(var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
yield return day;
}
Затем вы можете использовать его так:
foreach (DateTime day in EachDay(StartDate, EndDate))
// print it or whatever
Таким образом, вы можете нажимать через день, каждый третий день, только в будние дни и т. Д. Например, чтобы возвращать каждый третий день, начиная с с "начальной" датой вы можете просто вызвать AddDays (3)
в цикле вместо AddDays (1)
.
Вместо этого вы можете подумать о написании итератора, который позволяет использовать обычный синтаксис цикла for, например, ++. Я поискал и нашел аналогичный вопрос , ответивший здесь, в StackOverflow, который дает указатели на то, как сделать DateTime итерируемым.
Вы можете использовать функцию DateTime.AddDays ()
, чтобы добавить свой DayInterval
к StartDate
и убедиться, что оно меньше EndDate
.
DateTime startDate = new DateTime(2009, 3, 10);
DateTime stopDate = new DateTime(2009, 3, 26);
int interval = 3;
while ((startDate = startDate.AddDays(interval)) <= stopDate)
{
// do your thing
}
DateTime startDate = new DateTime(2009, 3, 10);
DateTime stopDate = new DateTime(2009, 3, 26);
int interval = 3;
for (DateTime dateTime=startDate;
dateTime < stopDate;
dateTime += TimeSpan.FromDays(interval))
{
}
Для вашего примера вы можете попробовать
DateTime StartDate = new DateTime(2009, 3, 10);
DateTime EndDate = new DateTime(2009, 3, 26);
int DayInterval = 3;
List<DateTime> dateList = new List<DateTime>();
while (StartDate.AddDays(DayInterval) <= EndDate)
{
StartDate = StartDate.AddDays(DayInterval);
dateList.Add(StartDate);
}
У меня есть класс Range
в MiscUtil , который может вам пригодиться. В сочетании с различными методами расширения вы можете:
foreach (DateTime date in StartDate.To(EndDate).ExcludeEnd()
.Step(DayInterval.Days())
{
// Do something with the date
}
(Вы можете или не хотите исключать конец - я просто подумал, что приведу его в качестве примера.)
Это в основном готовый ( и более общего назначения) форма решения Маквандера.