Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    305

    [JavaScript]: for con date

    Ho il seguente codice:

    codice:
    ...
    function CalcolaGiorniSelezione()
    {
     var data_inizio = document.getElementById("f_rangeStart").value;
     var data_fine = document.getElementById("f_rangeEnd").value;
     var intervallo = "";
     for (tutte le date comprese tra data_inizio e data_fine)  
       {
        intervallo = intervallo + data;
        if (data < data_fine) intervallo = intervallo + "\n"
       }
     document.getElementById("f_selection").value = intervallo
    }
    ...
    dove "data_inizio" e "data_fine" sono di tipo "gg/mm/aaaa".

    Non riesco a scrivere il codice (in grassetto e corsivo) che mi consente di scorrere tutte le date comprese tra "data_inizio" e "data_fine".

    Grazie mille.

    Vincenzo

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    intanto ti devi creare due oggetti date
    // splitti per "/"
    var data_inizio = document.getElementById("f_rangeStart").value.spli t('/');
    // crei nuovo oggetto date fornendo anno, mese, giorno
    d_inizio=new Date(data_inizio[2],data_inizio[1]-1,data_inizio[0]);
    fai altrettanto con l' altra data

    poi cerchi con chiave "differenza date" e hai il numero di giorni tra le due date

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    305
    Ho scritto:

    codice:
    <script type="text/javascript">
     function differenceBetweenDateInDays(dateStr1, dateStr2)
     {
      var spt = dateStr1.split("/");
      var d1 = new Date(parseInt(spt[2]), parseInt(spt[1]) - 1, parseInt(spt[0]));
      spt = dateStr2.split("/");
      var d2 = new Date(parseInt(spt[2]), parseInt(spt[1]) - 1, parseInt(spt[0]));
      var difference = d1.getTime() - d2.getTime();
      return difference / (1000 * 60 * 60 * 24);
     }
     function CalcolaGiorniSelezione()
     {
      var data_inizio = document.getElementById("f_rangeStart").value.split('/');
      d_inizio=new Date(data_inizio[2],data_inizio[1]-1,data_inizio[0]);
      var data_fine = document.getElementById("f_rangeEnd").value.split('/');
      d_fine=new Date(data_fine[2],data_fine[1]-1,data_fine[0]);
      if ((data_inizio != "") && (data_fine != ""))
       {
        document.getElementById("f_selection").value = differenceBetweenDateInDays(d_fine,d_inizio)
       }
      else
        document.getElementById("f_selection").value = "Selezionare prima data inizio e fine selezione"
     };
    </script>
    <button id="BTN_CalcolaGiorniSelezione" onclick="CalcolaGiorniSelezione()">Calendario</button>
    ma ho errore.

    Grazie.

    Vincenzo

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    passa le stringhe originali alla funzione differenceBetweenDateInDays,
    non gli oggetti date, altrimenti la funzione cerca di crearli nuovamente e ti da errore

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    305
    Adesso il seguente codice funziona correttamente

    codice:
    <script type="text/javascript">
     function CalcolaGiorniSelezione()
     {
      var data_inizio = document.getElementById("f_rangeStart").value.split('/');
      d_inizio=new Date(data_inizio[2],data_inizio[1]-1,data_inizio[0]);
      var data_fine = document.getElementById("f_rangeEnd").value.split('/');
      d_fine=new Date(data_fine[2],data_fine[1]-1,data_fine[0]);
      var diff_giorni = (d_fine.getTime() - d_inizio.getTime())/(1000 * 60 * 60 * 24);
      if (diff_giorni>=0)
        {
         document.getElementById("f_selection").value = diff_giorni+1
        }
      else
        document.getElementById("f_selection").value = "Selezionare correttamente data inizio e fine selezione"
     };
    </script>
    <button id="BTN_CalcolaGiorniSelezione" onclick="CalcolaGiorniSelezione()">Calendario</button>
    ... ma quello che vorrei fare è visualizzare nell'oggetto "f_selection" l'elenco di tutte le date tra "d_inizio" e "d_fine" (e non la differenza in giorni tra le due date).

    Grazie.

    Vincenzo

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    una cosa del genere
    codice:
    var data_inizio = document.getElementById("f_rangeStart").value.split('/');
    var data_fine = document.getElementById("f_rangeEnd").value.split('/');
    var d_inizio=new Date(data_inizio[2],data_inizio[1]-1,data_inizio[0]);
    var d_fine=new Date(data_fine[2],data_fine[1]-1,data_fine[0]);
    var diff_giorni = (d_fine.getTime() - d_inizio.getTime())/(1000 * 60 * 60 * 24);
    if (diff_giorni<=0){
      document.getElementById("f_selection").value = "Selezionare correttamente data inizio e fine selezione";
    }
    var x=0;
    while(x!=diff_giorni){
    	document.getElementById("f_selection").value+='\n'+formatOutputDate(d_inizio);
    	d_inizio.setDate(d_inizio.getDate()+1);
    	x++;
    }
    codice:
    function formatOutputDate(d){
    	var g=d.getDate();
    	g=(g<10)?'0'+g:g;
    	var m=d.getMonth()+1;
    	m=(m<10)?'0'+m:m;
    	var a=d.getFullYear();
    	return g+'/'+m+'/'+a;
    }
    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.