[Fork] http://pt.stackoverflow.com/questions/180517/timespan-contar-ocorr%C3%AAncias-de-um-hor%C3%A1rio-espec%C3%ADfico

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
					
public class Program
{
	public static IEnumerable<DateTime> OcorrenciasDeHorarios(
    	DateTime Inicio, DateTime Final, params string[] Horarios)
	{
		var cultura = new CultureInfo("en-US");
		for (var dia = Inicio; dia <= Final; dia = dia.AddDays(1)) 
		{
			foreach (var diaHorario in Horarios)
			{
				DateTime teste = DateTime.MinValue;
				if (!DateTime.TryParse(dia.Date.ToString("MM/dd/yyyy") + " " + diaHorario, out teste))
				{
					Console.WriteLine("Horário " + diaHorario + " está em formato inadequado e não será considerado.");
					continue;
				}
				
				if (teste >= Inicio && teste <= Final)
					yield return teste;
			}
		}
	}
	
	public static void Main()
	{
		// var lista = OcorrenciasDeHorarios(DateTime.Parse("2017-01-10 01:35:00 PM"), DateTime.Parse("2017-01-12 07:35:00 PM"), "12:50:00 AM", "05:50:00 PM");
		var lista = OcorrenciasDeHorarios(DateTime.Parse("2017-01-10 01:35:00 PM"), DateTime.Parse("2017-01-12 07:35:00 PM"), "12:50:00 AM", "05:50:00 PM", "horarioerrado");
		Console.WriteLine(lista.Count());
		foreach (var item in lista) Console.WriteLine(item);
	}
}
;