Visual Basic.NET - Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

 
Vista:
sin imagen de perfil

Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

Publicado por Albert Rafael (1 intervención) el 24/06/2015 00:00:08
Hola a todos los usuarios de LWP. Es para preguntarles acerca de una duda que tengo, verán tengo una ventana con dos DateTimePicker y un botón, lo que quiero lograr es seleccionar dos fechas y que me calcule cuántos días hay entre las dos fechas, excluyendo los sábados y los domingos. Sería de mucha ayuda y gracias.
programadatetime
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

Publicado por giancarlo (488 intervenciones) el 24/06/2015 21:54:38
para el caso de domingos, es asi:, adaptalo un poco

If fechaIni.DayOfWeek = DayOfWeek.Sunday Then
'codigo a ejecutar si es domingo
end if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose A.
Val: 10
Ha disminuido su posición en 63 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

Publicado por Jose A. (12 intervenciones) el 25/06/2015 09:05:14
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim Dias As Long
Dim Contador_de_dias As Integer
Dim Fecha_Avanza As Date
Fecha_Avanza = Format(DateTimePicker1.Value, "dd/MM/yyyy")
Dias = DateAndTime.DateDiff(DateInterval.Day, DateTimePicker1.Value, DateTimePicker2.Value) + 1
Contador_de_dias = 0
For I = 1 To Dias
	Fecha_Avanza = DateAndTime.DateAdd(DateInterval.Day, 1, Fecha_Avanza)
	If Format(Fecha_Avanza, "dddd") <> "sábado" And Format(Fecha_Avanza, "dddd") <> "domingo" Then
		Contador_de_dias = Contador_de_dias + 1
	End If
Next
MsgBox("contador de dias sin sábados ni domingos " & Contador_de_dias)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose A.
Val: 10
Ha disminuido su posición en 63 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

Publicado por Jose A. (12 intervenciones) el 24/06/2015 23:06:12
Yo, en principio calcularia cuanto dias en total. Pondria un For para que los recorra y dentro del FOR, sumandole 1 al dia de inicio, preguntaria si es sabado o domingo, si no lo es le sumo en otra variable un dia mas..
Probablemente mas lento, pero mas fiable.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

Publicado por Khristtian (17 intervenciones) el 25/06/2015 04:14:14
debes pensar un poco antes de hacer un bucle que recorra todos los dias del rango.... algo que es absolutamente absurdo.
los algoritmos y la lógica de programación no son de ese tipo de soluciones.

yo lo haría mas o menos así.

fecha fin - fecha inicio = cant dias
luego hay que determinar en que día inicia y termina (lun-mar.....)
la idea es crear otra variable donde a cant dias le sumes los días que faltan para que fecha inicio sea lunes y fecha fin sea domingo
esa nueva cant de días, que serán semanas completas, lo divides en 7
obtendras el numero de semanas
el numero de semanas lo multiplicas por 2 (sab y dom)
obtendrás la cantidad de sab y domingos del periodo (semanas completas)
a la cant de dias inicial (del rango) le restas los sab y dom del periodo y ademas le restas los días que agregaste antes (para crear las semanas completas)

para restar los feriados debes tener una BD de ellos y contar los que se encuentren en el rango, y restarlos también.

si te complica, avísame y te escribo la clase.

debo reconocer que un bucle te dará resultado, pero es una solución básica.... por eso después critican a VB por que sus sistemas se congelan o consumen muchos recursos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como calcular días hábiles entre dos fechas excluyendo los sábados y domingos. Ayuda ?

Publicado por Raymond (1 intervención) el 23/06/2020 05:16:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Function Calculador_Dias_Entero(inicio As DateTime, final As DateTime, ajuste As Int32) As Int32
    Dim datosSQL As New DatosSQL()
    Dim listaFeriados As IEnumerable(Of DateTime) = datosSQL.DiasFeriadosSQL("select feriados from DiasFeriados")
    Dim dias As Int32 = Convert.ToInt32((final - inicio).TotalDays)
    Dim ajusteInicio As Int32 = 0
    Dim ajusteFinal As Int32 = 0
 
    If Int(inicio.DayOfWeek) <> 1 Then
        ajusteInicio = Int(inicio.DayOfWeek) - 1
    End If
 
    If Int(final.DayOfWeek) <> 1 Then
        ajusteFinal = (Int(final.DayOfWeek) - 1)
    End If
 
    Dim semanas As Int32 = (dias + ajusteInicio - ajusteFinal) / 7
 
    dias -= semanas * 2
 
    For Each feriado As DateTime In listaFeriados
        If feriado > inicio AndAlso feriado < final Then
            dias -= 1
        End If
    Next
 
    Return dias + ajuste
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar