using System.Collections.Generic;
public static void Main()
var startDate = new DateTime(2019, 12, 28);
var endDate = new DateTime(2020, 1, 3);
var listOfDays = CalculateRange(startDate, endDate);
startDate = new DateTime(2019, 12, 28);
endDate = new DateTime(2019, 12, 31);
listOfDays = CalculateRange(startDate, endDate);
public static IList<int> CalculateRange(DateTime startDate, DateTime endDate)
const int YEAR_FACTOR = 10_000;
var listOfDays = new List<int>();
var fromYear = startDate.Year;
var fromDay = startDate.DayOfYear;
var toYear = endDate.Year;
var toDay = endDate.DayOfYear;
var fromDayYear = fromDay * YEAR_FACTOR + fromYear;
var toDayYear = toDay * YEAR_FACTOR + toYear;
listOfDays.Add(fromDayYear);
Console.WriteLine("- no -", limit);
limit = new DateTime(toYear, 1, 1).AddDays(-1).DayOfYear;
Console.WriteLine("- {0} -", limit);
for (var startDay = fromDay+1 ; startDay <= limit; startDay++)
listOfDays.Add(startDay * YEAR_FACTOR + fromYear);
for (var startDay = 1; startDay < limit; startDay++)
listOfDays.Add(startDay * YEAR_FACTOR + fromYear);
if (fromDayYear != toDayYear)
listOfDays.Add(toDayYear);
public static void PrintList(IList<int> list)
Console.WriteLine("Printing list");
foreach (var item in list)
Console.WriteLine("{0:D7}", item);