using System.Collections.Generic;
private static List<ScheduleTime> listOfSchedulers = null;
private static IList<FormattedScheduleTime> formattedList = new List<FormattedScheduleTime>();
public static void Main()
listOfSchedulers = new List<ScheduleTime>(){
StartDate = DateTime.Parse("2021-02-10T13:35"),
EndDate = DateTime.Parse("2021-02-18T15:05"),
StartDate = DateTime.Parse("2021-02-05T11:05"),
EndDate = DateTime.Parse("2021-02-09T12:25"),
listOfSchedulers.ForEach(item => {
while(item.StartDate <= item.EndDate){
if(item.DaysOfWeek != null){
var splittedList = item.DaysOfWeek.Split(",");
for(int i =0; i <splittedList.Length; i++){
if((DayOfWeek)Int32.Parse(splittedList[i]) == item.StartDate.DayOfWeek){
var record = new FormattedScheduleTime(){
DayOfWeek = item.StartDate.DayOfWeek.ToString(),
Date = item.StartDate.ToString("yyyy-MM-dd"),
Time = $"{item.StartDate.ToString("HH:mm")} - {item.EndDate.ToString("HH:mm")}"
formattedList.Add(record);
var record = new FormattedScheduleTime(){
DayOfWeek = item.StartDate.DayOfWeek.ToString(),
Date = item.StartDate.ToString("yyyy-MM-dd"),
Time = $"{item.StartDate.ToString("HH:mm")} - {item.EndDate.ToString("HH:mm")}"
formattedList.Add(record);
item.StartDate = item.StartDate.AddDays(1);
Console.Write(JsonSerializer.Serialize(formattedList.OrderBy(i => DateTime.Parse(i.Date))));
private class ScheduleTime {
public DateTime StartDate {get; set;}
public DateTime EndDate {get; set;}
public string DaysOfWeek {get; set;}
private class FormattedScheduleTime {
public string DayOfWeek {get; set;}
public string Date {get;set;}
public string Time {get; set;}