Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534

    modifica a funzione giorni

    ciao a tutti ho questa funzione che calcola i gironi tra due date...

    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="2003,2,15" >15 feb</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="2003,3,15" >15 mar</option>
    </select>
    
    
    <input type="text" name="nomecampo">
    </form>
    
    </BODY>
    </HTML>
    mi funziona perfettamente ma come faccio a cambiare i campi da selest a campi text??

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

    ma che bel codice

    per usare dei text invece delle select devi anche controllare la validità della data... facciamo in formato gg/mm/aaaa
    codice:
    <HTML>
    <HEAD>
    <script language="javascript">
    function y2k(number) { 
    	return (number < 1000) ? number + 1900 : number; 
    }
    function dataValida(txt){
    	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	if(re.test(txt)){
    		var adata = txt.split('/');
    		var gg = parseInt(adata[0],10);
    		var mm = parseInt(adata[1],10);
    		var aaaa = parseInt(adata[2],10);
    		var xdata = new Date(aaaa,mm-1,gg)
    		if((y2k(xdata.getYear())==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg))
    			return xdata
    		else return false
    	}else return false
    }
    function dateDiff(dataa,datab){
    	var diffMilli = dataa.getTime()-datab.getTime()
    	var divisore = 86400000
    	return Math.round(diffMilli/divisore)
    }
    function GiorniDiff(txtdataa,txtdatab){
    	var aDataA = dataValida(txtdataa);
    	var aDataB = dataValida(txtdatab);
    	var giorni=''
    	if(aDataA && aDataB)
    		giorni = dateDiff(aDataA,aDataB)	
    	return giorni
    }
    </script>
    <TITLE>dateDiff</TITLE>
    </HEAD>
    <BODY>
    
    <form>
    DataA<input type="text" name="dataA">
    
    DataB<input type="text" name="dataB">
    
    <input type="button" value="DateDiff" 
    onclick="this.form.differenza.value=GiorniDiff(this.form.dataA.value,this.form.dataB.value)">
    
    <input type="text" name="differenza">
    </form>
    
    </BODY>
    </HTML>

  3. #3
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    si si un gran bel codice

    senti io avrei la necessità di calcolare la differenza tra date ma se sono anni uguali ok altrimenti se ci sono anni diversi calcolarli in base agli anni..

    asp ti faccio un esempio che è meglio

    da 15/04/2003 a 18/04/2003 va bene come stà

    da 15/04/2003 a 15/04/2004 dovrebbe dirmi prima la diff che palla tra 15/04/2003 al 31/12/2003 e poi dal 1/12/2003 al 15/04/2004ù

    capito??

    cercavo di realizzarlo in asp tramite dei cicli ma non conosco la sintassi di javascript potresti aiutarmi pls

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Cream
    asp ti faccio un esempio che è meglio

    da 15/04/2003 a 18/04/2003 va bene come stà

    da 15/04/2003 a 15/04/2004 dovrebbe dirmi prima la diff che palla tra 15/04/2003 al 31/12/2003 e poi dal 1/12/2003 al 15/04/2004ù

    capito??
    no :master:

  5. #5
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    ciao willy...

    allora ti espongo il mio problema dal principio...

    devo fare un calcolo dell'interesse per dei pagamenti; ogni anno però ha dei tassi di interesse diversi

    quindi se mi si pone il problema di calcolare i giorni che intercorrono tra due data che fanno parte dello stesso anno va bene il codice che mi hai dato

    se invece, le date fanno parte di anni diversi devo calcolare i giorni per ogni anno.

    ESEMPIO PRATICO:
    _________________________________________
    se fanno parte dello stesso anno:
    dal 15/02/2004 al 20/02/2004
    risultato: 5 giorni
    _________________________________________
    se fanno parte di anni differenti:
    dal 15/12/2003 al 12/01/2004
    il risultato deve essere
    dal 15/12/2003 al 31/12/2003
    risultato 16 giorni per l'anno 2003
    e dal 1/1/2004 al 12/01/2004
    risultato 12 giorni per l'anno 2004
    _________________________________________


    capito adesso ????

  6. #6
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    avevo pensato di farla così aiutandomi con asp ma non mi scrive il risultato:

    codice:
    <%
    datainiziogg = Request("datainiziogg")
    datainiziomm = Request("datainiziomm")
    datainizioaaaa = Request("datainizioaaaa")
    datainizio = datainizioaaaa & "," & datainiziomm & "," & datainiziogg 
    datafinegg = Request("datafinegg")
    datafinemm = Request("datafinemm")
    datafineaaaa = Request("datafineaaaa")
    datafine = datafineaaaa & "," & datafinemm & "," & datafinegg 
    differenza = datafineaaaa - datainizioaaaa%>
    
    
    
    <%if datainizioaaaa = datafineaaaa then%>
    <%="le date sono dello stesso anno"%>
    <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>
    <form name="form">
    DATA INIZIO<select name="inizior">
    <option value="<%=datainizio%>"><%=datainizio%></option>
    </select>
    
    
    DATA FINE<select name="finer">
    <option value="<%=datafine%>"><%=datafine%></option>
    </select>
    
    
    <input type="text" name="nomecampo">
    <SCRIPT Language="JavaScript">
    scrivi()
    </SCRIPT>
    </form>
    <%else%>
    
    
    
    <%="le date sono di" & differenza & "anni diversi"%>
    
    
    <%for i = 1 to differenza
    
    
    if i = 1 then 
    incremento_anno = datainizioaaaa
    %>
    <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 scrivi1(){
    inizio = document.form1.inizior.options[document.form1.inizior.selectedIndex].value;
    fine = document.form1.finer.options[document.form1.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.form1.nomecampo.value = diff;
    }
    </SCRIPT>
    <form name="form1">
    DATA INIZIO<select name="inizior">
    <option value="<%=datainizio%>"><%=datainizio%></option>
    </select>
    
    
    DATA FINE<select name="finer">
    <option value="<%=incremento_anno%>,12,31"><%=incremento_anno%>,12,31</option>
    </select>
    
    
    <input type="text" name="nomecampo">
    <SCRIPT Language="JavaScript">
    scrivi1()
    </SCRIPT>
    <%
    else
    incremento_anno = incremento_anno + 1
    Response.write "ANNO" & i %>
    
    
    <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 scrivi2(){
    inizio = document.form2.inizior.options[document.form2.inizior.selectedIndex].value;
    fine = document.form2.finer.options[document.form2.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.form2.nomecampo.value = diff;
    }
    </SCRIPT>
    <form name="form2">
    DATA INIZIO<select name="inizior">
    <option value="<%=incremento_anno%>,1,1"><%=incremento_anno%>,1,1</option>
    </select>
    
    
    DATA FINE<select name="finer">
    <option value="<%=incremento_anno%>,12,31"><%=incremento_anno%>,12,31</option>
    </select>
    
    
    <input type="text" name="nomecampo">
    <SCRIPT Language="JavaScript">
    scrivi2()
    </SCRIPT>
    <% end if %>
    <% next %>
    <%incremento_anno = incremento_anno + 1%>
    <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 scrivifine(){
    inizio = document.formfine.inizior.options[document.formfine.inizior.selectedIndex].value;
    fine = document.formfine.finer.options[document.formfine.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.formfine.nomecampo.value = diff;
    }
    </SCRIPT>
    <form name="formfine">
    DATA INIZIO<select name="inizior">
    <option value="<%=incremento_anno%>,1,1"><%=incremento_anno%>,1,1</option>
    </select>
    
    
    DATA FINE<select name="finer">
    <option value="<%=datafine%>"><%=datafine%></option>
    </select>
    
    
    <input type="text" name="nomecampo">
    <SCRIPT Language="JavaScript">
    scrivifine()
    </SCRIPT>
    <%end if%>

  7. #7
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    concettualmente va bene ma non mi scrive il risultato :|

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao Cream,

    ma quella pagina riceve dei valori da altri form?... boooo
    io ti faccio un esempio con i giorni per ogni anno
    codice:
    <HTML>
    <HEAD>
    <script language="javascript">
    function dataValida(txt){
    	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	if(re.test(txt)){
    		var adata = txt.split('/');
    		var gg = parseInt(adata[0],10);
    		var mm = parseInt(adata[1],10);
    		var aaaa = parseInt(adata[2],10);
    		var xdata = new Date(aaaa,mm-1,gg)
    		if((xdata.getYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg))
    			return xdata
    		else return false
    	}else return false
    }
    function dateDiff(dataa,datab){
    	var diffMilli = dataa.getTime()-datab.getTime()
    	var divisore = 86400000
    	return Math.round(diffMilli/divisore)
    }
    function GiorniDiff(txtdataa,txtdatab){
    	var aDataA = dataValida(txtdataa);
    	var aDataB = dataValida(txtdatab);
    	var giorni=''
    	if(aDataA && aDataB){
    		var anni = aDataB.getFullYear()-aDataA.getFullYear()
    		var str=''
    		if(anni!=0){
    			giorni=0
    			giorniAnno=0
    			giorniAnno=dateDiff(dataValida('31/12/'+aDataA.getFullYear()),aDataA)
    			giorni+=giorniAnno
    			str+='anno '+aDataA.getFullYear()+' = '+giorni+'\n'
    			for(i=aDataA.getFullYear()+1;i<aDataB.getFullYear();i++){
    				giorniAnno=dateDiff(dataValida('31/12/'+i),dataValida('31/12/'+(i-1)))
    				giorni+=giorniAnno
    				str+='anno '+i+' = '+giorniAnno+'\n'
    			}
    			giorniAnno=dateDiff(aDataB,dataValida('31/12/'+(aDataB.getFullYear()-1)))
    			giorni+=giorniAnno
    			str+='anno '+aDataB.getFullYear()+' = '+giorniAnno+'\n'
    			str+='totale = '+giorni
    			alert(str)
    		}else giorni = dateDiff(aDataB,aDataA)
    	}
    	return giorni
    }
    </script>
    <TITLE>dateDiff</TITLE>
    </HEAD>
    <BODY>
    
    <form>
    DataA<input type="text" name="dataA">
    
    DataB<input type="text" name="dataB">
    
    <input type="button" value="DateDiff" 
    onclick="this.form.differenza.value=GiorniDiff(this.form.dataA.value,this.form.dataB.value)">
    
    <input type="text" name="differenza">
    </form>
    
    </BODY>
    </HTML>
    io do per scontato che DataA sia minore di DataB

  9. #9
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    non mi funziona :|

  10. #10
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    ok ok va benissimo,
    ma come recupero i dati che vedo nella finestra??

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.