none
validacion de fecha RRS feed

  • Pregunta

  • Buenas noches,

    Tengo el siguiente problema y es que obtengo dos fechas con linq de una base de datos sql y los intento validar en un if, si la fecha del momento de validacion osea DateTime.Now esta entre las dos que saco con linq o es igual a la fecha inicial o final, pero solo funciona en caso de que no sea igual a ninguna fecha osea este entre las 2 pero no igual a ninguna.

    Este es el codigo:

    foreach(var result2 in qDescuentos) { if(result2.fechainicio <= DateTime.Now && result2.fechafinal >= DateTime.Now) {

    //Mi codigo si pasa el if } }


    Gracias de antemano, un saludo.

    martes, 3 de febrero de 2015 22:22

Respuestas

  • Hola Erick,

    La propiedad NOW obtiene fecha y hora actual del equipo, y para la comparación no te sirve. Debes de utilizar la propiedad Today que devuelve sólo la fecha. En tu caso esto se resuelve de la siguiente manera.

    if(DateTime.Today>= result2.fechainicio.Today && DateTime.Today <= result2.fechafinal.Today)

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ
    • Editado Willams Morales martes, 3 de febrero de 2015 23:22
    • Marcado como respuesta ErikNeller miércoles, 4 de febrero de 2015 9:09
    martes, 3 de febrero de 2015 23:16

Todas las respuestas

  • hola

    pero si tienes que estar en el rango no ser

    if(result2.fechainicio <= DateTime.Now && result2.fechafinal <= DateTime.Now)

    o sea tiene que ser menor a la fecha de fin

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 3 de febrero de 2015 22:25
  • Si pero yo necesito que la fecha de hoy este entre fecha inicio y fecha final y si te fijas estas validando en fechafinal fuera del rango.

    Osea si tengo un descuento que es valido unicamente entre el 01/02/2015 y 03/02/2015 incluyendo tiene que ser valido el dia 1, 2 y 3.

    Saludos.

    martes, 3 de febrero de 2015 22:32
  • Hola Erick,

    La propiedad NOW obtiene fecha y hora actual del equipo, y para la comparación no te sirve. Debes de utilizar la propiedad Today que devuelve sólo la fecha. En tu caso esto se resuelve de la siguiente manera.

    if(DateTime.Today>= result2.fechainicio.Today && DateTime.Today <= result2.fechafinal.Today)

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ
    • Editado Willams Morales martes, 3 de febrero de 2015 23:22
    • Marcado como respuesta ErikNeller miércoles, 4 de febrero de 2015 9:09
    martes, 3 de febrero de 2015 23:16
  • - DateTime.Now esta entre las dos que saco con linq

    DateTime.Today >= result2.fechainicio && DateTime.Today <= result2.fechafinal

    - DateTime.Now es igual a la fecha inicial o final

    DateTime.Today == result2.fechainicio || DateTime.Today == result2.fechafinal

    estas son las premisas que pones en tu pregunta inicial.

    ahora coloca dichas premisas en un if...

    DateTime fechaactual = DateTime.Today;
    if ((fechaactual >= result2.fechainicio && fechaactual <= result2.fechafinal) ||
    (fechaactual == result2.fechainicio || fechaactual == result2.fechafinal)){}
    supongo,que la,comparación final podría optimizarse pero es un ejemplo


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos


    miércoles, 4 de febrero de 2015 0:10
    Moderador
  • Perfecto cambiando DateTime.Now por DateTime.Today funciona perfectamente, ¡muchas gracias a todos chicos!

    Un cordial saludo.

    miércoles, 4 de febrero de 2015 9:10
  • >>Si pero yo necesito que la fecha de hoy este entre fecha inicio y fecha final y si te fijas estas validando en fechafinal fuera del rango.

    ahh pero entonces el problema no era la comparacion sino que molestaba la componente horaria del datetime

    si inspeccionabas las fechas hubieras visto los horarios en el datetime cuando comparas en el if, el DateTime.Now devuelve fecha y hora actual

    en cambio el Today solo devuelve la fecha y la hora usa un valor fijo a las 12:00

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 4 de febrero de 2015 11:12