none
Ayuda, contador días háblies

    Pregunta

  • Hola, necesito crear en Visual Basic una app en la que elijo una fecha en el datetimepicker, pongo el número de días que quiero que se sume en un textbox, y cuando aplaste el botón en un MsgBox salga la fecha resultante, pero lo que no sé es cómo hacer que solo sume días hábiles... Por favor su ayuda! hasta aquí tengo el lenguaje:

    Private Sub Button2_Click_1(sender As System.Object, e As System.EventArgs) Handles Button2.Click

            Dim fechainicial As Date = DateTimePicker3.Value

            Dim asumar As Integer = Número.Text
            Dim fechafinal As Date

            fechafinal = DateAdd(DateInterval.Day, asumar, fechainicial)



            MsgBox(fechafinal)

    lunes, 13 de febrero de 2017 14:11

Respuestas

  • Lisa Abcarius,

    ¿Qué consideras días hábiles? ¿Lunes a viernes? ¿Y los días festivos?

    Si deseas omitir en la cuenta los días sábados y domingos es simple pero si deseas omitir también los días festivos -según calendario local- entonces debes tener una lista donde se persistan esos días para comparar las fechas y omitir en la cuenta.

    Public Function CalcularFechaFinal(Fecha As DateTime, Dias As Integer) As DateTime	
    	
    	Dim DiasRojos As DayOfWeek() = {DayOfWeek.Saturday, DayOfWeek.Sunday}
    	Dim CuentaDias As Integer = 1
    
    	While CuentaDias < Dias
    		CuentaDias = CuentaDias + IIf(DiasRojos.Contains(Fecha.DayOfWeek), 0, 1)
    		Fecha = Fecha.AddDays(1)
    	End While
    
    	Return Fecha
    
    End Function
    
    Private Sub btnContarDiasHabiles_Click(sender As Object, e As EventArgs)
    
    	Dim FechaInicio As DateTime = DateTimePicker3.Value
    	Dim Dias As Integer = Convert.ToInt32(Número.Text)
    
    	MessageBox.Show(String.Format("Fecha fin {0}",
    			CalcularFechaFinal(FechaInicio, Dias).ToShortDateString))
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    lunes, 13 de febrero de 2017 15:18
  • Visita el siguiente link, me parece que es lo que buscas:

    http://vbpuntonet.blogspot.mx/2013/01/busca-enter-2-fechas-los-dias-habiles.html

    lunes, 13 de febrero de 2017 17:48

Todas las respuestas

  • Lisa Abcarius,

    ¿Qué consideras días hábiles? ¿Lunes a viernes? ¿Y los días festivos?

    Si deseas omitir en la cuenta los días sábados y domingos es simple pero si deseas omitir también los días festivos -según calendario local- entonces debes tener una lista donde se persistan esos días para comparar las fechas y omitir en la cuenta.

    Public Function CalcularFechaFinal(Fecha As DateTime, Dias As Integer) As DateTime	
    	
    	Dim DiasRojos As DayOfWeek() = {DayOfWeek.Saturday, DayOfWeek.Sunday}
    	Dim CuentaDias As Integer = 1
    
    	While CuentaDias < Dias
    		CuentaDias = CuentaDias + IIf(DiasRojos.Contains(Fecha.DayOfWeek), 0, 1)
    		Fecha = Fecha.AddDays(1)
    	End While
    
    	Return Fecha
    
    End Function
    
    Private Sub btnContarDiasHabiles_Click(sender As Object, e As EventArgs)
    
    	Dim FechaInicio As DateTime = DateTimePicker3.Value
    	Dim Dias As Integer = Convert.ToInt32(Número.Text)
    
    	MessageBox.Show(String.Format("Fecha fin {0}",
    			CalcularFechaFinal(FechaInicio, Dias).ToShortDateString))
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    lunes, 13 de febrero de 2017 15:18
  • Visita el siguiente link, me parece que es lo que buscas:

    http://vbpuntonet.blogspot.mx/2013/01/busca-enter-2-fechas-los-dias-habiles.html

    lunes, 13 de febrero de 2017 17:48