none
calcular meses entre 2 fechas RRS feed

  • Pregunta

  • hola alguien sabe como calcular el numero de meses que han pasado en un intervalo de tiempo

    sip io tengo 3 textbox y un boton

    en dos cuadros de texto ingreso las fechas y con el boton hago la resta para q me lo muestre en el tercer cuadro de texto

    el problema viene cuando quiero restarlas fechas no se si se pueda pero con datediff me trae errores

    jueves, 9 de febrero de 2012 0:39

Respuestas

  • para obtener la diferencia en mese podrias usar

    Public Function MonthDifference(lValue As DateTime, rValue As DateTime) As Integer

        Return Math.Abs((lValue.Month - rValue.Month) + 12 * (lValue.Year - rValue.Year))

    End Function

    Difference in months

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta gusanito_1890 viernes, 10 de febrero de 2012 4:26
    jueves, 9 de febrero de 2012 1:17
  • Saludos, esto te puede ayudar:

    Public Function Calcular(FechaInicio As Date, FechaActual As Date) As String
     
    diaActual = DatePart("d", FechaActual)      
    mesActual = DatePart("m", FechaActual)      
    anioActual = DatePart("yyyy", FechaActual)  
    '**************************************'
    diaInicio = DatePart("d", FechaInicio)      
    mesInicio = DatePart("m", FechaInicio)      
    anioInicio = DatePart("yyyy", FechaInicio)      
     
    B = 0
    Mes = mesInicio - 1
     
    ' si el mes es febrero
    If (Mes = 2) Then   ' *
    	If ((anioActual / 4 = 0 And anioActual / 100! = 0) Or anioActual / 400 = 0) Then
    		B = 29
    	Else
    		B = 28
    	End If
    ElseIf (Mes <= 7) Then  '*
    	If (Mes = 0) Then
    		B = 31
    	ElseIf (Mes / 2 = 0) Then
    		B = 30
    	Else
    		B = 31
    	End If
       
    ElseIf (Mes > 7) Then
    	If (Mes / 2 = 0) Then
    		B = 31
    	Else
    		B = 30
    	End If
    End If
       
       If ((anioInicio > anioActual) Or (anioInicio = anioActual And mesInicio > mesActual) Or (anioInicio = anioActual And mesInicio = mesActual And diaInicio > diaActual)) Then
    		MsgBox "La fecha de inicio ha de ser anterior a la fecha Actual"
       Else
    		If (mesInicio <= mesActual) Then
    			Anios = anioActual - anioInicio
    			If (diaInicio <= diaActual) Then
    				Meses = mesActual - mesInicio
    				Dias = diaActual - diaInicio
    			Else
    				If (mesActual = mesInicio) Then
    					Anios = Anios - 1
    				End If
    				Meses = (mesActual - mesInicio - 1 + 12) / 12
    				Dias = B - (diaInicio - diaActual)
    			End If
    		Else
    			Anios = anioActual - anioInicio - 1
     
    		If (diaInicio > diaActual) Then
    			Meses = mesActual - mesInicio - 1 + 12
    			Dias = B - (diaInicio - diaActual)
    		Else
    			Meses = mesActual - mesInicio + 12
    			Dias = diaActual - diaInicio
    		End If
      End If
     
    End If '*
     
    Calcular = Anios & "/" & Meses & "/" & Dias
     
    End Function


    __________________
    Edward Ocando
    Desarrollador .NET
    "Medir el progreso del desarrollo de un programa por líneas de código, es como medir el avance de la construcción de un avión en toneladas."
    <small>Bill Gates</small>

    __________________
    www.soydesarrollador.net

    • Marcado como respuesta gusanito_1890 viernes, 10 de febrero de 2012 4:26
    jueves, 9 de febrero de 2012 12:35

Todas las respuestas

  • para obtener la diferencia en mese podrias usar

    Public Function MonthDifference(lValue As DateTime, rValue As DateTime) As Integer

        Return Math.Abs((lValue.Month - rValue.Month) + 12 * (lValue.Year - rValue.Year))

    End Function

    Difference in months

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta gusanito_1890 viernes, 10 de febrero de 2012 4:26
    jueves, 9 de febrero de 2012 1:17
  • Saludos, esto te puede ayudar:

    Public Function Calcular(FechaInicio As Date, FechaActual As Date) As String
     
    diaActual = DatePart("d", FechaActual)      
    mesActual = DatePart("m", FechaActual)      
    anioActual = DatePart("yyyy", FechaActual)  
    '**************************************'
    diaInicio = DatePart("d", FechaInicio)      
    mesInicio = DatePart("m", FechaInicio)      
    anioInicio = DatePart("yyyy", FechaInicio)      
     
    B = 0
    Mes = mesInicio - 1
     
    ' si el mes es febrero
    If (Mes = 2) Then   ' *
    	If ((anioActual / 4 = 0 And anioActual / 100! = 0) Or anioActual / 400 = 0) Then
    		B = 29
    	Else
    		B = 28
    	End If
    ElseIf (Mes <= 7) Then  '*
    	If (Mes = 0) Then
    		B = 31
    	ElseIf (Mes / 2 = 0) Then
    		B = 30
    	Else
    		B = 31
    	End If
       
    ElseIf (Mes > 7) Then
    	If (Mes / 2 = 0) Then
    		B = 31
    	Else
    		B = 30
    	End If
    End If
       
       If ((anioInicio > anioActual) Or (anioInicio = anioActual And mesInicio > mesActual) Or (anioInicio = anioActual And mesInicio = mesActual And diaInicio > diaActual)) Then
    		MsgBox "La fecha de inicio ha de ser anterior a la fecha Actual"
       Else
    		If (mesInicio <= mesActual) Then
    			Anios = anioActual - anioInicio
    			If (diaInicio <= diaActual) Then
    				Meses = mesActual - mesInicio
    				Dias = diaActual - diaInicio
    			Else
    				If (mesActual = mesInicio) Then
    					Anios = Anios - 1
    				End If
    				Meses = (mesActual - mesInicio - 1 + 12) / 12
    				Dias = B - (diaInicio - diaActual)
    			End If
    		Else
    			Anios = anioActual - anioInicio - 1
     
    		If (diaInicio > diaActual) Then
    			Meses = mesActual - mesInicio - 1 + 12
    			Dias = B - (diaInicio - diaActual)
    		Else
    			Meses = mesActual - mesInicio + 12
    			Dias = diaActual - diaInicio
    		End If
      End If
     
    End If '*
     
    Calcular = Anios & "/" & Meses & "/" & Dias
     
    End Function


    __________________
    Edward Ocando
    Desarrollador .NET
    "Medir el progreso del desarrollo de un programa por líneas de código, es como medir el avance de la construcción de un avión en toneladas."
    <small>Bill Gates</small>

    __________________
    www.soydesarrollador.net

    • Marcado como respuesta gusanito_1890 viernes, 10 de febrero de 2012 4:26
    jueves, 9 de febrero de 2012 12:35