Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Differenza date prese da select

    Salve,

    ho intenzione di valorizzare in un campo testo la differenza in giorni tra due date selezionate in due select.
    Il codice è il seguente:

    codice:
    <head>
    <SCRIPT Language="JavaScript">
    function scrivi()	{
    inizio = document.form.inizior.options[document.form.inizior.selectedIndex].value;
    fine = document.form.finer.options[document.form.finer.selectedIndex].value;
    var d1 = new Date(inizio);
    var d2 = new Date(fine);
    diff = d2-d1;
    mtg = new String(diff/86400000);
    document.form.nomecampo.value = mtg;
    }
    </SCRIPT>
    </head>
    
    <select name="inizior" onChange="scrivi()">
    <option value="2004,3,27" >sabato 27 marzo 2004</option>
    <option value="2004,3,28" >domenica 28 marzo 2004</option>
    <option value="2004,3,29" >lunedì 29 marzo 2004</option>
    </select>
    
    <select name="finer" onChange="scrivi()">
    <option value="2004,3,27" >sabato 27 marzo 2004</option>
    <option value="2004,3,28" >domenica 28 marzo 2004</option>
    <option value="2004,3,29" >lunedì 29 marzo 2004</option>
    </select>
    Purtroppo però non mi funziona... nel campo viene scritto NaN

    Sapete aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao ID-entity,

    per creare un oggetto Date devi fare
    data = new Date(aaaa,mm-1,gg)
    e per far la differenza non basta fare data1 - data2
    ti faccio un esempio
    codice:
    <HTML>
    
    <head>
    <SCRIPT Language="JavaScript">
    function dateDiff(dataa,datab){//funzione che calcola la differenza in giorni
    	var diffMilli = dataa.getTime()-datab.getTime()
    	divisore = 86400000
    	return Math.round(diffMilli/divisore)
    }
    function scrivi(){
    inizio = document.form.inizior.options[document.form.inizior.selectedIndex].value;
    fine = document.form.finer.options[document.form.finer.selectedIndex].value;
    aInizio = inizio.split(',')
    aFine = fine.split(',')
    var d1 = new Date(aInizio[0],(aInizio[1]-1),aInizio[2]);
    var d2 = new Date(aFine[0],(aFine[1]-1),aFine[2]);
    diff = dateDiff(d2,d1)
    document.form.nomecampo.value = diff;
    }
    </SCRIPT>
    </head>
    <BODY>
    <form name="form">
    <select name="inizior" onChange="scrivi()">
    <option value="2004,3,27" >sabato 27 marzo 2004</option>
    <option value="2004,3,28" >domenica 28 marzo 2004</option>
    <option value="2004,3,29" >lunedì 29 marzo 2004</option>
    </select>
    
    
    <select name="finer" onChange="scrivi()">
    <option value="2004,3,27" >sabato 27 marzo 2004</option>
    <option value="2004,3,28" >domenica 28 marzo 2004</option>
    <option value="2004,3,29" >lunedì 29 marzo 2004</option>
    </select>
    
    
    <input type="text" name="nomecampo">
    </form>
    
    </BODY>
    </HTML>

  3. #3
    Grazie willibit,

    purtroppo il funzionamento non è del tutto perfetto. C'è qualcosa che non va... ad esempio non mi viene restituita differenza tra il 31/03 ed il 01/04... oppure come differenza tra 01/04 e 08/04 mi da -1

    Per la maggior parte delle date mi da la giusta differenza però...

  4. #4
    Tutto ok ora funziona...

    Solo non mi spiego perchè è necessario arrotondare... la differenza tra date non dovrebbe essere sempre multiplo di 86400000?


    Ad ogni modo grazie

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.