Estoy tratando de comprobar si una fecha es entre dos fechas. Las otras dos fechas vienen de dos DatePickers formato dd/mm/aaaa. Mi siguiente código funciona, pero si mi búsqueda de la fecha, es decir, igual a la de la fecha de recibo un «No entre» mensaje. Si busco la fecha 17/05/2013 y establecer los rangos para de apuesta de: 17/05/2013 y: 17/05/2013 quiero conseguir un «Entre» mensaje. Alguna idea?

Dim str As String = "srt_inlbp_20130517"
Dim sString As String

sString = str.Substring(str.Length - 8)
Dim dTableDate As Date = Date.ParseExact(str.Substring(str.Length - 8), "yyyyMMdd", Nothing)

Label9.Text = dTableDate

If ((dTableDate >= dFromDate.Value) And (dTableDate <= dToDate.Value)) Then
        MsgBox("between")
Else
        MsgBox("not between")
End If

OriginalEl autor alwaysVBNET | 2014-06-05

2 Comentarios

  1. 4

    He reescrito el código en este comprobable formato:

    Dim str As String = "srt_inlbp_20130517"
    
    Dim dTableDate As Date = _
        Date.ParseExact(str.Substring(str.Length - 8), "yyyyMMdd", Nothing)
    
    Dim dFromDate As New DateTime(2013, 5, 17)
    Dim dToDate As New DateTime(2013, 6, 17)
    
    If ((dTableDate >= dFromDate) And (dTableDate <= dToDate)) Then
        Console.WriteLine("between")
    Else
        Console.WriteLine("not between")
    End If

    Puedo conseguir el resultado «entre», así que sólo puedo sospechar que su dFromDate.Value y/o dToDate.Value no son como esperas. Se puede comprobar esto por favor?

    Su sospecha era correcta. La variable dFromDate.El valor fue de regresar el tiempo así. Lo he cambiado a dFromDate.Valor.Fecha y funciona.

    OriginalEl autor Enigmativity

  2. 3

    Intente escribir su comparadores como usted está leyendo un número de línea (por ejemplo, utilizar siempre un signo menor que).

    Dim questionableDate As Date = New Date(2013, 05, 17)
    Dim fromDate As Date = New Date(2013, 05, 17)
    Dim toDate As Date = New Date(2013, 05, 17)
    
    If (fromDate <= questionableDate) AndAlso (questionableDate <= toDate) Then
        MsgBox("between")
    Else
        MsgBox("not between")
    End If

    Verás que con el número de la línea de enfoque se puede determinar fácilmente lo que está haciendo el código. La a partir de la fecha y hasta la fecha se encuentran en los extremos con la cuestionable fecha en la que se intercala en el medio.

    Nota

    Si el código anterior no se ejercen los resultados esperados una vez que lo integran, entonces usted tendrá que establecer algunos puntos de interrupción y paso a través de su código para ver exactamente lo que los valores de sus variables.

    Buen código. He corregido el error mediante la adición de dFromDate.Valor.Fecha

    OriginalEl autor Sam Axe

Dejar respuesta

Please enter your comment!
Please enter your name here