tengo un textbox que lleva fecha de entrada de usuario. ahora quiero hacer una validator que comprueba la fecha es mayor que el día de hoy o no.

he probado este enlace, pero que tiene algunos problemas http://forums.asp.net/t/1116715.aspx/1

si le doy a esta fecha 25/03/2013 es correcto, pero si dar 01/04/2013, se dice que es menos el día de hoy.

**

Actualización

<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txtReturnDate"
                                Display="Dynamic" ErrorMessage="Date should be greater then  today" ForeColor="Red"
                                Operator="GreaterThan" ValidationGroup="VI">Date should be greater then  today</asp:CompareValidator>

**

Por favor me ayude a resolver este problema

  • ¿Cuál es tu código de comparación? Espero que usted no está tratando de comparar cadenas? (todavía se puede comparar, pero será distinta de la representación)
  • usted tiene que comprobar actual de la cultura : es posible que se lleva a 01/04/2013 como 4 Jan 2013 no como 1 April 2013
  • Nos muestran algo de código! Usted hizo establecer el tipo Date, no?
  • ver la actualización
  • Puede que nos muestran su código? Es imposible decir lo que hiciste por tu pregunta.
  • Parece típico de la Cultura de la manipulación problema. Tratar de llegar a la Cultura actual/interfaz de usuario de la Cultura. Tratar a la cultura de la fuerza en el inicio de la sesión, y ver si eso cambia cualquier comportamiento.

5 Comentarios

  1. 3

    Utilizar a continuación el código comparar especifica la fecha con la fecha de hoy

    string date = "01/04/2013";
                    DateTime myDate = DateTime.ParseExact(date, "dd/MM/yyyy",
                                               System.Globalization.CultureInfo.InvariantCulture);
                    if (myDate > DateTime.Today)
                    {
                        Console.WriteLine("greater than");
                    }
                   else
                    {
                     Console.WriteLine("Less Than");
                    }
  2. 1

    El problema es que 25/3/2013 es unambiguosly 25th March 2013, sin embargo con el mal de la cultura de la configuración, 01/04/13 podría ser 4th january 2013 que es, de hecho, antes de la fecha de hoy. Supongo que pensó que estaban entrando 1st April 2013 que sería después.

    La solución es uno de

    • Uso inequívoco de formato de fecha al escribir en su cuadro de texto (2013-01-04 para el 1 de abril)
    • El uso de un selector de fecha componente que expone a la fecha real
    • analizar la fecha en el modo de espera (dd/MM/yyyy)

    El problema con asp:CompareValidator es que no parecen entender que las fechas pueden ser formateados de manera diferente, y utiliza sólo la ToShortDateString variante de un DateTime para comparar (quien implementado esta debe ser la foto!). La solución de acuerdo a esta pregunta parece ser la utilización de un CustomValidator

    protected void DateTimeComparision_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = DateTime.ParseExact(txtDate.Text,"dd/MM/yyyy") > DateTime.Today 
    }
    • aprovecho la entrada en 01/04/2013 forma que en realidad es el 1 de abril de 2013 y mi cultura es «en-GB»
  3. 0

    Piensa 1/4/2013 es el 4 de enero. Usted debe crear un objeto DateTime utilizando el new DateTime(Año, Mes, Día) constructor de la comparisson funcionará correctamente, yo.e

    var compareDate = new DateTime(2013,4,1)
    bool afterToday = DateTime.Today < compareDate
  4. 0

    este tipo de fecha de validaciones deben ser permormed en el lado del cliente..en mi Aplicación se ha utilizado el siguiente código

    convert: function (d) {
            /* Converts the date in d to a date-object. The input can be:
            a date object: returned without modification
            an array      : Interpreted as [year,month,day]. NOTE: month is 0-11.
            a number     : Interpreted as number of milliseconds
            since 1 Jan 1970 (a timestamp) 
            a string     : Any format supported by the javascript engine, like
            "YYYY/MM/DD", "MM/DD/YYYY", "Jan 31 2009" etc.
            an object     : Interpreted as an object with year, month and date
            attributes.  **NOTE** month is 0-11. */
            return (
            d.constructor === Date ? d :
            d.constructor === Array ? new Date(d[0], d[1], d[2]) :
            d.constructor === Number ? new Date(d) :
            d.constructor === String ? new Date(d) :
            typeof d === "object" ? new Date(d.year, d.month, d.date) :
            NaN
        );
    
     isFutureDate: function (a) {
            var now = new Date();
            return (a > now) ? true : false;
        },

    Ahora llamar a las funciones anteriores como este (isFutureDate(convertir(«su forma de valor de fecha»))).

    • Si vas a ejecutar validaciones del lado del cliente que está bien, pero nunca se debe confiar en ella -implementar la validación del servidor también.
    • sí, si el usuario explícitamente apaga opción activar javascript en su navegador, a continuación, este código se cae en su cara..esto fue sólo una solución rápida a su problema eso es todo.. 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here