Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141

    Ricavare Data da somma di due date

    Scusate se posto, ma dopo aver ricercato sul forum non ho trovato niente che facesse al caso mio.

    Espongo il mio porblema:
    da due menu a tendina seleziono il mese ed il giorno,che saranno la mia data di partenza... in un altro menu a tendina seleziono un numero N di giorni...

    Avrei la necessità di visualizzare la data finale,ossia dataFinale = (giorno&mesepartenza + giorni selezionati);

    Ex 22 novembre 20gg da visualizzare: 12 dicembre

    Chiedo a voi se questo è possibile in javascript.

    Ringrazio Anticipatamente.

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Semplicissimo (basta saperlo fare ).

    Trasformi la tua data nell'oggetto Date(), poi sommi i 20 giorni e ritrasformi in data.
    codice:
    function sommaData() {
      var part_s = document.NOMEFORM.CAMPOPART.value; // o altro sistema
      var diff = parseInt(document.NOMEFORM.CAMPODIFF.value,10); // idem
    
      var tmp = part_s.split(/\/\.\-/);
      var part = new Date(tmp[2], parseInt(tmp[1])-1, tmp[0]);
      alert("data inizio: "+part.toLocaleString);
      var fine = part;
      fine.setDate(fine.getDate() + diff);
      alert("data fine: "+fine.toLocaleString);
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Ti ringrazio,ma penso ci sia qualche problema...
    ti posto il codice che ho utilizzato:

    codice:
    <script language="javascript">
    <!--
    
    
    
    function sommaData() {
      var giorno = document.formTest.gg.options[document.formTest.gg.selectedIndex].value;
      var mese = document.formTest.mm.options[document.formTest.mm.selectedIndex].value;
      var anno = '2005';	
      var part_s = giorno+'-'+mese+'-'+anno;
      
      
      var diff = parseInt(document.formTest.notti.options[document.formTest.notti.selectedIndex].value,10); // idem
    
      
      var tmp = part_s.split('/\/\.\-/');
      var part = new Date(tmp[2], parseInt(tmp[1]), tmp[0]);
      alert("data inizio: "+part.toLocaleString);
      var fine = part;
      fine.setDate(fine.getDate() + diff);
      alert("data fine: "+fine.toLocaleString);
    }
    -->
    </script>
    
    
    <form name="formTest">
    Mese:
    <select name="mm">
    <?php
    $mesi = array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto",
    "Settembre","Ottobre","Novembre","Dicembre");
    
    
    foreach ($mesi as $numM=>$nameM)
    {
    	?>
    	<option value="<?=$numM; ?>"><?=$nameM; ?></option>
    	<?php
    }
    ?>
    </select>
    
    Giorni:
    <select name="gg">
    <?php
    for($i=1; $i <= 30; $i++)
    {
    ?>
     <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
    <?php
    }
    ?> 
    </select>
    
    
    Notti:
    <select name="notti" onchange="sommaData()">
    <?php
    for($i=1; $i < 30; $i++)
    {
    ?>
     <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
    <?php
    }
    ?> 
    </select>
    </form>
    Ma quando provo mi esce l'errore:
    data inizio:
    function toLocaleString(){
    [native code]
    }

    così anche per 'data fine'...

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Nello script hai fatto un po' di modifiche. In particolare hai saltato un -1 . Comunque non ha senso montare una stringa per poi smontarla nuovamente.
    codice:
    function sommaData() {
      var giorno = document.formTest.gg.options[document.formTest.gg.selectedIndex].value;
      var mese = document.formTest.mm.options[document.formTest.mm.selectedIndex].value;
      var anno = '2005';	
      
      var diff = parseInt(document.formTest.notti.options[document.formTest.notti.selectedIndex].value,10); 
      
      var part = new Date(anno, parseInt(mese,10)-1, giorno);
    ...
    Per l'errore invece, credo sia un problema di PHP: controlla il codice che arriva al browser (click destro e visualizza sorgente), ed eventualmente posta quel codice: il sorgente PHP non serve per sviluppare il JS.

    Controlla in particolare che ci sia il DOCTYPE corretto o che ci sia il linguaggio della pagina (text/html) all'inizio dei dati inviati al browser.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Scusa nuovamente la rottura, ma di javascript ci capisco ver poco...
    Ora ho la pagina in solo html e javscript:
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <script language="javascript">
    <!--
    function sommaData() {
      var giorno = document.formTest.gg.options[document.formTest.gg.selectedIndex].value;
      var mese = document.formTest.mm.options[document.formTest.mm.selectedIndex].value;
      var anno = '2005';	
      var part_s = giorno+'-'+mese+'-'+anno;   
      
      var diff = parseInt(document.formTest.notti.options[document.formTest.notti.selectedIndex].value,10); // idem
    
      
      //var tmp = part_s.split('/\/\.\-/');
      var tmp = part_s.split('-');
      var part = new Date(anno, parseInt(mese,10)-1, giorno);  
      alert("data inizio: "+part.toLocaleString);
      var fine = part;
      fine.setDate(fine.getDate() + diff);
      alert("data fine: "+fine.toLocaleString);
    }
    -->
    </script>
    <title>Test</title>
    	
    </head>
    <body>
    <form name="formTest">
    Mese:
    <select name="mm">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>
    
    Giorni:
    <select name="gg">
    <option value="1">1</option>
    <option value="2">2</option>
    
    <option value="3">3</option>
    
    <option value="4">4</option>
    
    <option value="5">5</option>
    
    <option value="6">6</option>
    
    <option value="7">7</option>
    
    <option value="8">8</option>
    
    <option value="9">9</option>
    
    <option value="10">10</option>
    
    <option value="11">11</option>
    
    <option value="12">12</option>
    
    <option value="13">13</option>
    
    <option value="14">14</option>
    
    <option value="15">15</option>
    
    <option value="16">16</option>
    
    </select>
    
    
    Notti:
    <select name="notti" onchange="sommaData()">
    <option value="1">1</option>
    <option value="2">2</option>
    
    <option value="3">3</option>
    
    <option value="4">4</option>
    
    <option value="5">5</option>
    
    <option value="6">6</option>
    
    <option value="7">7</option>
    
    <option value="8">8</option>
    
    <option value="9">9</option>
    
    <option value="10">10</option>
    
    <option value="11">11</option>
    
    <option value="12">12</option>
    
    <option value="13">13</option>
    
    <option value="14">14</option>
    
    <option value="15">15</option>
    
    <option value="16">16</option>
    
    </select>
    </form>
    
    
    </body>
    </html>
    ma quando cambio il valore della select 'notti',
    esce sempre l'errore:
    function toLocaleString(){
    [native code]
    }
    che può essere?

    Ciao & grazie di nuovo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    il metodo .toLocaleString() richiede anche la parentesi (l'avevo dimenticata, scusa), ma se al primo colpo funziona (e` corretta la risposta che da` l'alert?) e al secondo no, il problema potrebbe essere qualcos'altro.

    Dimmi se appare il primo alert e se e` corretto.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    E' possibile visualizzare solo giorno e mese?

    [Scusa la rottura]

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Si`, certo.

    Quell'alert e` una cosa provvisoria, che ti puo` servire per testare lo script: per il tuo uso immagino dovrai usare i metodi dell'oggetto Date (vedi ad es: http://www.devguru.com/technologies/...kref/date.html ).

    Esempio:
    alert("data inizio: "+part.getDate()+" "+part.getMonth()+1);


    Alla fine ricordati che devi modificare quel
    anno="2005";
    Dovrai settare ad esempio l'anno corrente, altrimenti tra febbraio e marzo il conto non torna.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Daccordo...grazie 1000 x l'aiuto,davvero...

    Ciao

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.