none
Comparar distinrtas fechas (vb.net 2010) RRS feed

  • Pregunta

  • Buenas!

    Resulta que tengo 1 fecha en la base de datos, debo compararla con la fecha de la computadora cuando el software se ejecute y si la distancia es menor a 20 dias (claro tomando en cuenta el año y mes) que me genere un mensaje. 

    Para guiar un poco esta es la Funcion que cree con ayuda de este foro para validar la fecha:

        Public Function ValidarFechaNac(ByVal fechaProblema As Date) As Boolean

            Date.TryParse(txtFechaProblema.Text, fechaProblema)

            Dim fechaMaxima As New Date(2050, 1, 1)

            Dim fechaMinima As New Date(1950, 1, 1)

            If (fechaProblema > fechaMinima) And (fechaProblema < fechaMaxima) Then

                If IsDate(txtFechaProblema.Text) = False Then

                    MsgBox("La fecha ingresada no es válida", MsgBoxStyle.Exclamation, "Error")

                    txtFechaProblema.Text = ""

                    Return False

                Else

                    Return True

                End If

            End If

        End Function 

    viernes, 9 de diciembre de 2011 17:00

Todas las respuestas

  • Para restar dos fechas prueba con:

    Dim Fecha As Date = New Date(2011, 1, 1)

    Dim dias As Double = Date.Today.Subtract(Fecha).TotalDays


    Saludos. Peni
    viernes, 9 de diciembre de 2011 17:17
  • hola

    alguno puntos que no me cierran

     

     - si usas el TryParse() paa que ponjes esta linea

    If IsDate(txtFechaProblema.Text) = False Then

    no tiene sentido si el tryparse justamente devuelcve true/false si la fecha es valida o no

     

    - ademas para que defines un parametro en el metodo si despeus accedes directo al TextBox ?

     

    podrias probar usando

    Public Function ValidarFechaNac() As Boolean
    
    	Dim fechaProblema As DateTime
    	If Not DateTime.TryParse(txtFechaProblema.Text, fechaProblema) Then
    		MsgBox("La fecha ingresada no es válida", MsgBoxStyle.Exclamation, "Error")
    		txtFechaProblema.Text = ""
    		Return False
    	End If 
    
    	Dim fechaMaxima As New DateTime(2050, 1, 1)
    	Dim fechaMinima As New DateTime(1950, 1, 1)
    
    	If (fechaProblema > fechaMinima) And (fechaProblema < fechaMaxima) Then
    		MsgBox("La fecha ingresada no es válida", MsgBoxStyle.Exclamation, "Error")
    		txtFechaProblema.Text = ""
    		Return False
    	End If
    	
    	Return True
    	
    End Function 
    


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta bacaga viernes, 9 de diciembre de 2011 17:23
    • Desmarcado como respuesta bacaga viernes, 9 de diciembre de 2011 17:23
    viernes, 9 de diciembre de 2011 17:18
  • Francisco gracias por la ayuda, podrias se un poco más explicativo? disculpe es que no me quedo del todo claro.

    y Leandro gracias entendido por supuesto. Pero el asunto es asi: tengo idLic, fechaInicioLicencia y fechaFinalLicencia (en la base de datos), debo comparar la fechaFinalLicencia con la fecha que posea la computadora y si la cantidad de dias entre estas es menor a 20 entonces me genere un mensaje cada vez que ejecute la aplicación o cada 4 días.

    Gracias! ojala me puedan ayudar!

    viernes, 9 de diciembre de 2011 17:29
  •         Dim Fecha As Date = New Date(2011, 1, 1)
            Dim dias As Double = Date.Today.Subtract(Fecha).TotalDays
    
            If dias < 20 Then
                MessageBox.Show(String.Format("Han transcurrido {0}", dias))
            End If
    
    


    Supongamos que en la variable 'Fecha' esta la fecha de la base de datos (para el ejemplo simulo el primer día de año)

    'Date.Today' devuelve la fecha del día actual

    La instrucción 'Date.Today.Subtract(Fecha).TotalDays' resta las dos fechas y nos devuelve el nº de días entre ambas y luego simplemente comparas 'dias' con el valor que quieras y lanzas el mensaje.

    Por cierto, si es para una licencia, no sería cuando el nº de días sea mayor de 20?

     


    Saludos. Peni
    viernes, 9 de diciembre de 2011 17:36
  • tengo idLic, fechaInicioLicencia y fechaFinalLicencia (en la base de datos),

    y cual es el codigo que usas para recuperar esta informacion de tu db ?

    porque alli no defines ninguna consulta para recuperar esta informacion

     

    si la cantidad de dias entre estas es menor a 20 entonces me genere un mensaje cada vez que ejecute la aplicación o cada 4 días.

    realizando la resta entre dos fechas puedes obtener la diferencia en dias

    Francisco menciono la idea al usar el Subtract()

    pero no veo donde tienes las dos fechas, o es que se trata del fechaProblema con la fecha actual ?

     

    Public Function ValidarFechaNac() As Boolean

        Dim fechaProblema As DateTime
        If Not DateTime.TryParse(txtFechaProblema.Text, fechaProblema) Then
            MsgBox("La fecha ingresada no es válida", MsgBoxStyle.Exclamation, "Error")
            txtFechaProblema.Text = ""
            Return False
        End If

        Dim dias As Double = DateTime.Today.Subtract(fechaProblema).TotalDays
        If dias < 20 Then
            MsgBox("la fecha debes ser mayor a 20 dias", MsgBoxStyle.Exclamation, "Error")
            txtFechaProblema.Text = ""
            Return False
        End If
       
        Dim fechaMaxima As New DateTime(2050, 1, 1)
        Dim fechaMinima As New DateTime(1950, 1, 1)

        If (fechaProblema > fechaMinima) And (fechaProblema < fechaMaxima) Then
            MsgBox("La fecha ingresada no es válida", MsgBoxStyle.Exclamation, "Error")
            txtFechaProblema.Text = ""
            Return False
        End If
       
        Return True
       
    End Function 

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 9 de diciembre de 2011 17:38
  • creo q estan entiendiendo mal o seré yo..  fechaFinalLicencia  (que si está en la base de datos) debe ser comparada con la fecha que tenga la COMPUTADORA no con una fecha de la base de datos y de ahi ya genere el msj de los 20 dias.

     

    Saludos y gracias por el tiempo!

    viernes, 9 de diciembre de 2011 17:45
  • Has visto mi último mensaje? justo a eso te respondía ...
    Saludos. Peni
    viernes, 9 de diciembre de 2011 17:47
  • esta? 

    Dim Fecha As Date = New Date(2011, 1, 1)

    Dim dias As Double = Date.Today.Subtract(Fecha).TotalDays

    en donde esta consultando la base de datos? suponiendo que el campo tiene por nombre: fechaFinalLicencia  

    viernes, 9 de diciembre de 2011 17:57
  • A ver si me queda claro, tu pregunta se refiere a restar las dos fechas? Me remito a mi anterior respuesta, pero si tu pregunta se refiere a sacar una fecha de la base de datos ... es SQL o Access? Cómo accedes?
    Saludos. Peni
    sábado, 10 de diciembre de 2011 4:33