Foros del Web » Programando para Internet » ASPX (.net) »

Validar rangos de fecha.

Estas en el tema de Validar rangos de fecha. en el foro de ASPX (.net) en Foros del Web. Saludos, espero me puedan ayduar con este problema por favor. Yo tengo en un formulario dos controles calendarextender de ajax al escojer una fecha en ...
  #1 (permalink)  
Antiguo 23/09/2008, 07:02
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Validar rangos de fecha.

Saludos, espero me puedan ayduar con este problema por favor.
Yo tengo en un formulario dos controles calendarextender de ajax al escojer una fecha
en el primero la segunda fecha que escoja no puede pasarse de la misma semana de la primera.
ejemplo:

FEcha1: 2008/09/23 (yyyy/MM/dd)

Fecha2: la fecha dos puede llegar desde el segundo día a partir de la Fecha1 solo hasta
el domigo 28 de septiembre del 2008 que se terminaria esa semana.

Hay alguna forma en asp.net (vb) de validar ese rango de fechas? La verdad no tengo idea de como hacer algo asi.
Gracias.
  #2 (permalink)  
Antiguo 23/09/2008, 07:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Validar rangos de fecha.

Hola,

1. Yo intentaría guardar la primera fecha seleccionada en una variable DateTime. Una vez ahí:
1.1 calcularía el día de año al que pertenece esa fecha mediante el método DayOfTheYear diaAño1
1.2 calcularia el día de la semana al quepertenece mediante el método DayOfTheWeak. diaDeSemana1

2. Seleccionar la segunda fecha:
2.1 calcular el día de año de esa fecha. diaAño2
2.2 calcular el día de la semana. diaSemana2

Y ahora con esos datos garantizar que no hayan pasado mas de 7 días: diaAño2 - diaAño1 <= 7

Cuando sabemos que las fechas no distan más de una semana la fecha2 pertenecera a la misma semana si diaSemana2 >=diaSemana1

Es sólo un esbozo de lo que a mí se me ocurre. No sé si existe alguna manera mejor de solucionarlo. Suerte
  #3 (permalink)  
Antiguo 23/09/2008, 07:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Validar rangos de fecha.

Repasando por encima la respuesta que te dí me he dado cuenta de un posible error:

Al pasar de un año a otro puede ocurrir que una misma semana pertenezca a dos años diferentes, y la resta de días da negativa en la primera comprobación... es un caso que habría uqe vijilar por posibles errores.


Te dejo el link de la documentación de métodos aplicables a la clase DateTime:

http://msdn.microsoft.com/es-es/libr...rs(VS.80).aspx
  #4 (permalink)  
Antiguo 23/09/2008, 12:21
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Validar rangos de fecha.

Gracias por tu respusta pero me harias un enorme favor al proporcionarme un ejemplo práctico.
  #5 (permalink)  
Antiguo 24/09/2008, 00:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Mensaje Respuesta: Validar rangos de fecha.

Hola de nuevo,
Símplemente se trata de escribir en un lenguaje de programación lo que te describía ayer.

Aquí te lo dejo una función que pasándole dos fechas devuelve True si son válidas y False si no lo son

Código:
function validarFecha(byval fecha1 as DateTime, byval fecha2 as DateTime) as Boolean

    ' Número de día del año al que pertenecen las fechas seleccionadas
    Dim diaAño1 as Integer = fecha1. DayOfTheYear 
    Dim diaAño2 as Integer = fecha2.DayOfTheYear 

    ' Número de día de la semana al que pertenecen las fechas seleccionadas
    Dim diaSemana1 as Integer = fecha1.DayOfTheWeak
    Dim diaSemana2 as Integer = fecha2.DayOfTheWeak

    ' Primero comprobamos que las fechas no disten más de 7 días

    if diaAño2 - diaAño1 <= 7 then
        ' Si distan menos de 7 días comprobar que el día de la fecha2 sea mayor o igual que el primero
        if diaSemana2 >= diaSemana1
            valida = True
        else
            valida = False
        end if
    else 
    valida = false
    end if

    return valida
end function
Lo he escrito deprisa y sin siquiera probarlo. Haz alguna prueba. Si no funciona correctametne espero que al menos sirva para orientarte un poco. Si tienes algun problema aquí estamos para hecharte una mano.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.