using System.Globalization;
public static void Main()
string input = "Mon 06:23-Fri 18:00";
var interval = input.Split("-");
var start = new InputInterval(GetDayIndex(interval[0].Split(" ")[0]), TimeSpan.Parse(interval[0].Split(" ")[1]));
var end = new InputInterval(GetDayIndex(interval[1].Split(" ")[0]), TimeSpan.Parse(interval[1].Split(" ")[1]));
Console.WriteLine(start.DayOfWeek.ToString() + ' '+ start.Time);
Console.WriteLine(end.DayOfWeek.ToString() + ' '+ end.Time);
Console.WriteLine(GetInterval(DateTime.Now, start));
Console.WriteLine(GetInterval(DateTime.Now, end));
private static int GetDayIndex(string dayNameAbbreviation)
return (Array.IndexOf(CultureInfo.InvariantCulture.DateTimeFormat.AbbreviatedDayNames, dayNameAbbreviation)+6)%7;
private static DateTime GetInterval(DateTime now, InputInterval input)
var d = new DateTime(now.Year, now.Month, now.Day, input.Time.Hours, input.Time.Minutes, 0);
d = d.AddDays(input.DayOfWeek - ((int)now.DayOfWeek+6)%7);
public class InputInterval
public int DayOfWeek {get;set;}
public TimeSpan Time {get;set;}
public InputInterval(int dow, TimeSpan t)