Visualizzazione dei risultati da 1 a 7 su 7

Discussione: controllo valore date

  1. #1

    controllo valore date

    Ho uno script che controlla il formato delle date e funziona benissimo.
    Tale script controlla anche il valore della data.
    Cioè se la data è 32/10/2001 ti dice che hai sbagliato.

    Ma se inserisco una data tipo 30/02/2000 oppure 31/11/2004
    non ti da avviso.

    Devo controllare ad uno ad uno i valori possibili di errore
    di queste date particolari o qualcuno ha qualche script
    già creato ?

    grazie
    lucasweb.it
    web design & development >>>

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non dai molte informazioni.

    Quello che dici fa il tuo script si puo` realizzare in almeno due modi completamente diversi: usando l'oggetto Date() o usando le RegExp.

    Anche raffinare il controllo si puo` fare con i due metodi.

    Se fai una ricerca nel forum, trovi soluzioni in ambedue i modi.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Questa è una delle possibili soluzioni. La data è nella variabile 'val'

    codice:
    function check_it_date(val) {
    
        var dd = parseInt(val.substring(0,2), 10);
        var mm = parseInt(val.substring(3,5), 10);
        var yy = parseInt(val.substring(6,10), 10);
       
        if ((mm < 1) && (mm > 12)) return false;
        if (dd < 1) return false;
    
        switch(mm) {
    	case 4:
    	case 6:
    	case 9:
    	case 11:
    	   if (dd > 30)	return false;
    	   break;
        }
    	
        if ((yy % 4) == 0) {
    	if ((mm == 2) && (dd > 29)) return false;
        }
        else {
    	if ((mm == 2) && (dd > 28)) return false;
        }
    
        return true;
    }


    Edit: devi usare la funzione in questo modo:

    codice:
    if (check_it_date('30/02/2000')) {
     /* data valida */
    }
    else {
     /* data non valida */
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    Grazie
    ho integrato la tua funzione con la mia e funziona benissimo.
    lucasweb.it
    web design & development >>>

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Mi sono accorto di una imprecisione:

    cambia questa riga

    if (dd < 1) return false;

    con questa

    if ((dd < 1) || (dd > 31)) return false;



    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    io raffinerei il controllo come dice Mich_
    -controllo della sintassi con RegularExpression
    -controllo data valida con l'oggetto Date
    codice:
    function dataValida(txt){
      var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
      if(re.test(txt)){
        var adata = txt.split('/');
        var gg = parseInt(adata[0],10);
        var mm = parseInt(adata[1],10);
        var aaaa = parseInt(adata[2],10);
        var xdata = new Date(aaaa,mm-1,gg)
        if((xdata.getFullYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg))
          return xdata
        else return false
      }else return false
    }

  7. #7
    Grazie della correzione fcaldera.
    lucasweb.it
    web design & development >>>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.