public static void Main()
var fechaHoraProximaSincronizacion = new DateTime(2025, 3, 3, 13, 0, 0);
var ahora = new DateTime(2025, 3, 3, 21, 5, 0);
var horasSincronizacionIDM = "08:00;13:00;20:00;13:30";
if (fechaHoraProximaSincronizacion <= ahora)
var horaActual = ahora.TimeOfDay;
var horasEjecucion = horasSincronizacionIDM
.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
.Select(h => TimeSpan.TryParse(h, out var ts) ? ts : (TimeSpan?)null)
.Where(ts => ts.HasValue)
if (!horasEjecucion.Any())
var proximaHoraEjecucion = horasEjecucion.FirstOrDefault(h => h > horaActual);
fechaHoraProximaSincronizacion =
proximaHoraEjecucion == default
? today.AddDays(1).Add(horasEjecucion.First())
: today.Add(proximaHoraEjecucion);
Console.WriteLine(fechaHoraProximaSincronizacion);