Created
June 17, 2013 16:14
-
-
Save amhed/5798136 to your computer and use it in GitHub Desktop.
Ejemplo de manejo de horas para Developers.do
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; using System.Linq; namespace EjemploDevDo { public class HourManagement { //Supongo que esta lista viene de una BD o de algún servicio private static readonly DateTime[] listaFeriados2013 = new[] { new DateTime(2013,1,1), new DateTime(2013,1,6), new DateTime(2013,1,26), new DateTime(2013,2,27), new DateTime(2013,3,29), new DateTime(2013,5,1), new DateTime(2013,5,30), new DateTime(2013,8,16), new DateTime(2013,9,24), new DateTime(2013,11,6), new DateTime(2013,12,25), }; public static DateTime CalcularFechaRespuesta(DateTime fechaInicio, int cantidadHoras) { var horaInicio = 8; var horaTermino = 17; var fechaRespuesta = fechaInicio; //Se aplica la operacion de adición de horas while (cantidadHoras > 0) { var lapsoDia = horaTermino - fechaRespuesta.Hour; fechaRespuesta = fechaRespuesta.AddHours(lapsoDia > cantidadHoras ? cantidadHoras : lapsoDia); if (fechaRespuesta.Hour == horaTermino) { fechaRespuesta = fechaRespuesta.AddDays(1); fechaRespuesta = new DateTime( fechaRespuesta.Year, fechaRespuesta.Month, fechaRespuesta.Day, horaInicio, 0, 0); } cantidadHoras -= lapsoDia; } //Revision de fin de semana if (fechaRespuesta.DayOfWeek == DayOfWeek.Saturday || fechaRespuesta.DayOfWeek == DayOfWeek.Sunday) fechaRespuesta = fechaRespuesta.AddDays(2); //Revision de dias feriados if (listaFeriados2013.Contains(fechaRespuesta)) { fechaRespuesta = fechaRespuesta.AddDays(1); } //Fecha final return fechaRespuesta; } } } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment