La Web del Programador: Comunidad de Programadores
 
    Pregunta:  47191 - SABER CUANTOS DIAS TIENE UN MES
Autor:  Luis Alberto Vélez
Hola, desarrollo una aplicación en Visua Basic y necesito averiguar los dias que tiene un mes especifico, existe alguna función que me devuelva el número de dias que tiene un mes?

  Respuesta:  ricaurtem
Explico mejor.

La idea es esta, debes de tener un mes y un año a utilizar, entonces para usar el datediff, primero necesitas la fecha1 y la fecha2, la fecha1 seria la fecha del mes y el año actual (como dia usas 1, ejemp 1-Sep-2006), entonces para la fecha2 le sumas al mes que tienes le sumas 1, para que sea el mes siguiente (Solo hay que poner condicion para cuando el mes es Diciembre (12) ya que si le sumas 1 no hay mes 13, sino que ya te diste cuenta pasa a enero y para un año despues tambien)
O sea si es diciembre le sumas 1 al año y lo pones a que sea enero, sino le sumas 1 solamente al mes, entonces te quedaria algo asi fecha2= 1-Oct-2006, y luego restas con el usando el modo de solo dias, Datediff("d", fecha1, fecha2) y listo, te sirve hasta para año bisiestos y todo sin mucho lio.

  Respuesta:  ricaurte
Puedes usar la funcion datediff, y restas, el primer dia del mes siguiente menos el primer dia del mes actual. (incluyendo el año)
yo lo he usado y me va bien.

  Respuesta:  Al Camms
Luis:

Te dejo una pequeña función que ejemplifica como determino los días de un mes:
----------------------------------------------------------------------------------------------
Function ¿byDiasMes(ByRef byDia As Byte) As Byte
If byDia < 1 Or byDia > 12 Then Exit Function
¿byDiasMes = Val(Mid$("312831303130313130313031", (byDia - 1) * 2 + 1, 2))
End Function
----------------------------------------------------------------------------------------------
La prefiero en vez de dejar regados if's y select's a lo largo del código.

Por supuesto, tienes que ingeniartelas para agregarle un día más cuando se trate de un febrero bisiesto (año MOD 4 AND NOT año MOD 100 = 0 OR año MOD 400 = 0)

Hasta ahora no he encontrado un truco, hechizo o función (patentada por Gates) que haga lo anterior, si la encuentras, por favor avisame.

(Nota: Funciona bien también en C, Java, 4690, Pascal, etc.)

Espero que te sirva