using System.Collections.Generic;
var start_time = "08:00";
var dictionary = CalculateTimeDifference(start_time, end_time);
foreach (var kvp in dictionary)
Console.WriteLine($"{kvp.Key} - {kvp.Value}");
static Dictionary<string, double> CalculateTimeDifference(string start_time, string end_time)
var start = DateTime.Parse(start_time).TimeOfDay;
var end = DateTime.Parse(end_time).TimeOfDay;
var hours = Enumerable.Range(0, 24).Select(i => new DateTime().Date.AddHours(i).ToString("HH:mm")).ToList();
var dictionary = new Dictionary<string, double>();
var hour_time = TimeSpan.FromMinutes(60);
for (var i = 0; i < hours.Count - 1; i++)
var current_time = DateTime.Parse(hours[i]).TimeOfDay;
var next_time = DateTime.Parse(hours[i + 1]).TimeOfDay;
if (current_time >= start && current_time < end)
var minutes_difference = 0.0;
minutes_difference = (end - current_time).TotalMinutes;
minutes_difference = (next_time - current_time).TotalMinutes;
var current_percentage = minutes_difference / hour_time.TotalMinutes * 100;
dictionary.Add(hours[i], current_percentage);
var end_time_difference = end - current_time;
var end_percentage_difference = end_time_difference.TotalMinutes / hour_time.TotalMinutes * 100;
dictionary.Add(hours[i], end_percentage_difference);
dictionary.Add(hours[i], 0);
dictionary.Add(hours[hours.Count-1], 0);