Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586

    Controllo data non superiore a 31 gGG

    Ciao;
    Avrei bisogno di controllare che la data inserita dall'utete in una form non sia più vecchia di 31 gg rispeto all'odierna sapreste spiegarmi come devo fare?

    La for è così

    <select name="giorno" class="campi">
    <%
    For x = 1 to 31
    selected = ""
    If CInt(x) = day(now()) Then selected = "selected"
    %>
    <option value="<%=Right("00" & x, 2)%>" <%=selected%>><%=Right("00" & x, 2)%></option>
    <%
    Next
    %>
    </select>

    <select name="mese" class="campi">
    <%
    For y = 1 to 12
    selected = ""
    If Cint(y) = Month(now()) Then selected = "selected"
    %>
    <option value="<%=Right("00" & y, 2)%>" <%=selected%>><%=Right("00" & y, 2)%></option>
    <%
    Next
    %>
    </select>

    <select name="anno" class="campi">
    <%
    For z = Year(now()) - 1 to (Year(now()))

    selected = ""
    If Cint(z) = Year(now()) Then selected = "selected"
    %>
    <option value="<%=z%>" <%=selected%>><%=z%></option>
    <%
    Next
    %>
    </select>


    il controllo che vorrei fare è una cosa tipo

    if (datainserita - data odierna > 31)
    {
    alert("ATTENZIONE: Sono passati più di 31 giorni");
    return ;
    }

    E' una cosa fattibile?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Puoi fare cosi

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function controllaData(day,month,year) {
     //-------- Data limite = data odierna - 31 giorni
     limitDate = new Date();
     limitDate.setDate(limitDate.getDate()-31); 
     
     //-------- Costruzione data da controllare
     ctrlDate = new Date();
     //---- Assegnazione dell'anno
     ctrlDate.setFullYear(year);
     //---- Assegnazione del mese : il mese di gennaio è il mese n°0
     ctrlDate.setMonth(month - 1);
     //---- Assegnazione del giorno
     ctrlDate.setDate(day);
     
     //-------- Conversione di entrambe date al formato ssaammgg unico modo per confrontare due date
     //         esiste forse un altro modo con l'oggetto Date()
     limitDateCYMD = limitDate.getFullYear(year) * 10000 + (limitDate.getMonth()+1) * 100 + limitDate.getDate(); 
     ctrlDateCYMD  = ctrlDate.getFullYear(year)  * 10000 + (ctrlDate.getMonth()+1)  * 100 + ctrlDate.getDate();
     
     // alert(ctrlDateCYMD +'<'+ limitDateCYMD);
     
     //-------- Se la data da controllare è minore della data limite scatta un errore e
     //         la funzione rinvia false
     if ( ctrlDateCYMD < limitDateCYMD) {
      alert('error');
    	return false;
     }
     //-------- Se si arriva qui allora la data è corretta quindi la funzione rinvia true
     return true;
    }
     controllaData(25,5,2005);
     
     controllaData(12,5,2005);
    
    //-->
    </script>
    
    </head>
    <body>
    
    </body>
    </html>

  3. #3
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    scusa ma non capisco il tuo script io la data da controllare la prendo dalla form

    dovrebbe essere una cosa di questo tipo???
    ctrlDateCYMD = document.funclub.anno.value + document.funclub.mese.value + document.funclub.giorno.value;

    getFullYear(year) * 10000 a cosa serve questa?

  4. #4
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    Sono arrivata a fare questo però qualunque data inserisco nella form il risultato della sottrazione è sempre 0 perchè??????

    mioanno = document.funclub.anno.value;
    miomese = document.funclub.mese.value;
    miogiorno = document.funclub.giorno.value;


    var data = new Date();
    var gg, mm, aaaa;

    gg = data.getDate();
    if (gg < 10)
    {
    gg = "0" + data.getDate();
    }
    else
    {
    gg = data.getDate();
    }
    mm = data.getMonth()+1;
    if (mm < 10)
    {
    mm = "0" + (data.getMonth() + 1);
    }
    else
    {
    mm = data.getDate();
    }
    aaaa = data.getFullYear();

    CurrentDate = new Date(aaaa +"/"+ mm +"/"+ gg );
    InsertedDate = new Date (mioanno +"/"+ miomese +"/"+ miogiorno);

    giorni = (CurrentDate-InsertedDate);
    document.write("sono passati "+giorni+" giorni");

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ci sono parecchie cose sbagliate ed altre inutili... semplifico:
    codice:
    mioanno = document.funclub.anno.value; 
    miomese = document.funclub.mese.value; 
    miogiorno = document.funclub.giorno.value; 
    
    var CurrentDate = new Date(); 
    InsertedDate = new Date(mioanno,miomese-1,miogiorno); 
    
    giorni = Math.floor((CurrentDate-InsertedDate)/86400000); 
    alert("sono passati "+giorni+" giorni");
    questo puo' esserti utile...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    InsertedDate = new Date(mioanno,miomese-1,miogiorno);

    mettendo il new Date i valori di mioanno miomese e mio giorno sembrano venir sostituiti dai valori della data attuale quindi il risultato è sempre 0 perchè i valori vengono rimpiazzati?

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da Ashry
    scusa ma non capisco il tuo script io la data da controllare la prendo dalla form

    dovrebbe essere una cosa di questo tipo???
    ctrlDateCYMD = document.funclub.anno.value + document.funclub.mese.value + document.funclub.giorno.value;

    getFullYear(year) * 10000 a cosa serve questa?
    Passi i parametri alla funzione :
    controllaData(document.funclub.giorno.value, document.funclub.mese.value, document.funclub.anno.value);

    getFullYear(year) * 10000 serve per mettere la data al formato ssaammgg che è l'unico modo per confrontare due date.

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Ashry
    InsertedDate = new Date(mioanno,miomese-1,miogiorno);

    mettendo il new Date i valori di mioanno miomese e mio giorno sembrano venir sostituiti dai valori della data attuale quindi il risultato è sempre 0 perchè i valori vengono rimpiazzati?
    Puoi riferire il risultato di questo esempio? :master:
    codice:
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    mioanno = "2005" //document.funclub.anno.value; 
    miomese = "05" //document.funclub.mese.value; 
    miogiorno = "31" //document.funclub.giorno.value; 
    
    var CurrentDate = new Date(); 
    InsertedDate = new Date(mioanno,miomese-1,miogiorno); 
    
    giorni = Math.floor((CurrentDate-InsertedDate)/86400000); 
    alert("sono passati "+giorni+" giorni");
    
    //-->
    </SCRIPT>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    sono passati 0 giorni/datacorrente=Tue Jun 14 15:18:41 UTC+0200 2005data inseritaTue Jun 14 00:00:00 UTC+0200 2005

    codice:
    mioanno = document.funclub.anno.value; 
    miomese = document.funclub.mese.value; 
    miogiorno = document.funclub.giorno.value; 
    
    var CurrentDate = new Date(); 
    InsertedDate = new Date(mioanno,miomese-1,miogiorno); 
    
    giorni = Math.floor((CurrentDate-InsertedDate)/86400000); 
    alert("sono passati "+giorni+" giorni"+"/datacorrente="+CurrentDate+"data inserita"+InsertedDate);
    dimenticavo io ho inserito il 14 gennaio 2005

  10. #10
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    Lascia stare sono una babba ho dimenticato di sistemare il nome della form VVoVe: Grazie dell'aiuto

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.