Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103

    Conteggio giorni con questo script..

    Vorrei sapere se potreste aiutarmi ad inserire una funzione che calcoli il numero dei giorni compresi tra le selezioni arrivo e partenza e li inserisca nel campo " tot_giorni"..

    Lo script che ho utilizzato è il seguente (gentilmente concesso da br1 e adattato)

    codice:
    function popola_gg(mese,nome) {
    
    	if ((form.dal_mese.value) == "Aprile 2005" ) {
    		mese = 4;
    	}else if ((form.dal_mese.value) == "Maggio 2005" ) {
    		mese = 5;
    	}else if ((form.dal_mese.value) == "Giugno 2005" ) {
    		mese = 6;
    	}else if ((form.dal_mese.value) == "Luglio 2005" ) {
    		mese = 7;
    	}else if ((form.dal_mese.value) == "Agosto 2005" ) {
    		mese = 8;
    	}else if ((form.dal_mese.value) == "Settembre 2005" ) {
    		mese = 9;
    	}else if ((form.dal_mese.value) == "Ottobre 2005" ) {
    		mese = 10;
    	}
    	var newData = new Date()
    	anno = newData.getFullYear(); // anno attuale
    	var newData = new Date(anno,mese,0); // l'ultimo del mese richiesto
    	var maxg = newData.getDate();
    	if (nome == "dal_mese") {
    		g = document.form.dal_giorno;
    	}else if (nome=="al_mese") {
    		g = document.form.al_giorno;
    	}
    	g.options.length=0;
    	for (var i=0;i<maxg;i++) {
    		g.options[i] = new Option(i+1,i+1)
    	}
    	
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    potresti usare qualcosa del genere:
    codice:
      var data = "Nov 2, 2005";
      var today = (new Date()).valueOf();
      data = Date.parse(data);
      var giorni = Math.floor((data-today)/(1000*3600*24));
    valueOf() e Date.parse(Stringa data) ritornano il valore in millisecondi della data da Epoch.

    facendo data-today ottieni la differenza in millisecondi tra le date stabilite, da cui la divisione e il troncamento all'intero inferiore per avere in giorni il valore richiesto.

    Occhio al metodo parse di Date, perché può prendere date in diversi formati (prende ad esempio anche "2, Nov, 2005").

    Se invece hai già gli oggetti Date sia iniziale che finale, usa solo valueOf e ti eviti la seccatura di parse

    codice:
      var iniziale = .... //qui hai già recuperato dal form la data inizialie (è un oggetto Date()!!!!)
      var finale =....//idem per data finale
      var giorni = Math.floor((finale.valueOf()-iniziale.valueOf())/(1000*3600*24));
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    Grazie mille per la dritta...
    lunedì serà provero( ho tutto in uff):P..

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    si ma se io ho anno e mese uniti?

    Aprile 2005
    Maggio 2005
    Giugno 2005
    Luglio 2005
    Agosto 2005
    Settembre 2005
    Ottobre 2005

    io passerei a fare un controllo e ricavare due variabili per ogni valore.. sarebbe l'unica soluzione o mi sapresti consigliare un trucchetto?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    qualcun altro può darmi una mano?

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Stai rimescolando troppo i suggerimenti... vediamo di semplificare supponendo che il valore di mese e anno provengano da una select con options simili:
    codice:
    <select name="dal_mese">
    <option value="042005">Aprile 2005</option>
    <option value="052005">Maggio 2005</option>
    ...
    ed il giorno provenga dalle select gia' viste.

    quindi:
    codice:
    function differenza_gg() {
      f = document.nomeDelTuoForm;
      
      dal_ma = f.dal_mese.options[f.dal_mese.selectedIndex].value;
      dal_m = dal_ma.substr(0,2);
      dal_a = dal_ma.substr(2);
      dal_g = f.dal_giorno.value;
      data_dal = new Date(dal_a,dal_m-1,dal_g);	
    
      al_ma = f.al_mese.options[f.al_mese.selectedIndex].value;
      al_m = al_ma.substr(0,2);
      al_a = al_ma.substr(2);
      al_g = f.al_giorno.value;
      data_al = new Date(al_a,al_m-1,al_g);	
    
      gg_dif = (data_al - data_dal) / 86400000;
    
      return gg_dif;
    }
    Come richiamare la funzione dipende da come vuoi utilizzare il risultato

    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    azz.. nn me l'aspettavo..domani in uff lo provo..
    grazie cmq..grande!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    ho levato il return e inserito

    codice:
    document.form.totale_notti.value=(gg_dif);
    la funzione, viene chiamata con onChange sul select..

    Ho provato ma totale_notti mi visualizza NaN...

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lo script e' testato e funzionante... ovviamente dipende da come lo hai implementato nella tua pagina: posta il link.

    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

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    link

    br1 ma sei di cagliari?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.