Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203

    problemi con le date...al 30 e 31

    Il problema:
    in questo calcolatore
    http://www.miolegale.it/interessi_le...area=interessi
    accade un fenomeno strano:

    inserendo due date con giorno 30 o 31 si perdono per strada 30 giorni....


    Il codice javascript

    if(dataA >= 20071231)
    {
    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);

    if(mma == 12 && gga == 31)
    {
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    arrivo.setDate(gga);
    incr = 0;
    }
    arrivo.setMonth(mma-1);
    arrivo.setFullYear(aaa);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[7] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse 3.00% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ gga+"." +mma +"." +aaa +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }

    Riporto per semplificare solo una parte del codice che tanto è ciclico.

    Fate delle prove senza mettere gli importi così solo per vedere il problema delle date.


    Io non riesco a risolver ma sicuramente voi ci metterete un ...millisecondo!


    Mi correggo,

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    riporto l'intero script. Effetttivamente un passaggio può non bastare

    esempio dal 1.1.1970 al 31.12.1970 conta 335 giorni
    Sviluppo del calcolo:
    Capitale 0 x Tasso Interesse 5.00% x
    (dal 1.1.1970 al 31.12.1970=335 /365)= 0
    i giorni avrebbero dovuto essere 365

    il problema si pone anche alla data di partenza:
    Sviluppo del calcolo:
    Capitale 0 x Tasso Interesse 5.00% x
    (dal 30.1.1970 al 1.1.1971=365/365)= 0
    i giorni avrebbero dovuto essere 395.




    <!--

    function imposta_oggi()
    {
    // oggi
    oggi = date();
    document.form_interessi.aa.value = oggi.getYear();
    document.form_interessi.mm.value = oggi.getMonth()+1;
    document.form_interessi.gg.value = oggi.getDate();

    document.form_interessi.fa.value = oggi.getYear();
    document.form_interessi.fm.value = oggi.getMonth()+1;
    document.form_interessi.fg.value = oggi.getDate();
    delete oggi;
    }
    function calc_interessi()
    {
    var int_perc =[0.05,0.10,0.05,0.025,0.035,0.03,0.025,0.03];
    var date =[19430101,19901216,19970101,19990101,20010101,20020 101,20040101,20080101];
    var incr = 0;
    tot_inte = 0;
    interessi = new Number();
    interessi = 0;
    capitale = new Number();
    capitale = parseInt(document.form_interessi.capitale.value);
    arrivo = new Date();
    partenza = new Date();
    oggi = new Date();
    dataA = 20080101;
    dataP = 20080101;
    //data di partenza
    ggp = parseInt(document.form_interessi.gg.value);
    mmp = parseInt(document.form_interessi.mm.value);
    aap = parseInt(document.form_interessi.aa.value);
    dataP = (aap* 10000) + (mmp * 100) + ggp;
    //data di arrivo
    gga = parseInt(document.form_interessi.fg.value);
    mma = parseInt(document.form_interessi.fm.value);
    aaa = parseInt(document.form_interessi.fa.value);
    dataA = (aaa* 10000) + (mma * 100) + gga;
    // oggi
    ggo = 0;
    mmo = 0;
    aao = 0;
    dataO = 0;


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    if(aap > aaa || dataP < 19700101)
    {
    alert("Date incongruenti o precedenti al 1 gennaio 1943.\n \n Si prega di correggere e riprovare, grazie.");
    document.form_interessi.gg.focus();
    return (false);
    }
    document.form_interessi.risultato.value = "Sviluppo del calcolo: \n\n";




    ////////////////////////////////////////////////////int_perc[0]/////////////////////////////////////////////////////////////



    if(dataP <= 19901215)
    {
    incr = 0;
    if(dataA >= 19901215)
    {
    ggo = 15;
    mmo = 12;
    aao = 1990;
    arrivo.setDate(ggo); ///////////////////////////////////// attenzione nella prima tranche di calcolo è ggo poi è gga
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setMonth(mmo-1);
    arrivo.setFullYear(aao);

    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[0] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse " + "5.00% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 15;
    mmp = 12;
    aap = 1990;
    dataP = 19901215;
    }




    /////////////////////////////////////////////////////int_perc[1]//////////////////////////////////////////////////////////////////



    if(dataP <= 19961231)
    {
    incr = 0;
    if(dataA >= 19961231)
    {
    ggo = 31;
    mmo = 12;
    aao = 1996;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setMonth(mmo-1);
    arrivo.setFullYear(aao);

    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[1] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse " + "10.00% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 31;
    mmp = 12;
    aap = 1996;
    dataP = 19961231;
    }




    //////////////////////////////////////////////////////int_perc[2]/////////////////////////////////////////////////////////////////////

    if(dataP <= 19981231)
    {
    incr = 0;
    if(dataA >= 19981231)
    {
    ggo = 31;
    mmo = 12;
    aao = 1998;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setMonth(mmo-1);
    arrivo.setFullYear(aao);

    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[2] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse " + "5.00% x \n(dal "+ ggp+"."+ mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 31;
    mmp = 12;
    aap = 1998;
    dataP = 19981231;
    }



    //////////////////////////////////////////////////////////int_perc[3]/////////////////////////////////////////////////////////////

    if(dataP <= 20001231)
    {
    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);
    incr = 0;
    if(dataA >= 20001231)
    {
    ggo = 31;
    mmo = 12;
    aao = 2000;
    incr = 1;
    arrivo.setDate(30);
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setFullYear(aao);arrivo.setMonth(mmo-1);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[3] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse 2.50% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 31;
    mmp = 12;
    aap = 2000;
    dataP = 20001231;
    }




    /////////////////////////////////////////////////////int_perc[4]//////////////////////////////////////////////////////////////////




    if(dataP <= 20011231)
    {
    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);
    incr = 0;
    if(dataA >= 20011231)
    {
    ggo = 31;
    mmo = 12;
    aao = 2001;
    incr = 1;
    arrivo.setDate(30);
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setFullYear(aao);arrivo.setMonth(mmo-1);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[4] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse 3.50% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 31;
    mmp = 12;
    aap = 2001;
    dataP = 20011231;
    }




    ////////////////////////////////////////////////////////int_perc[5]///////////////////////////////////////////////////////////////


    if(dataP <= 20031231)
    {
    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);
    incr = 0;
    if(dataA >= 20031231)
    {
    ggo = 31;
    mmo = 12;
    aao = 2003;
    incr = 1;
    arrivo.setDate(30);
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setFullYear(aao);arrivo.setMonth(mmo-1);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[5] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse 3.00% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 31;
    mmp = 12;
    aap = 2003;
    dataP = 20031231;
    }



    //////////////////////////////////////////////////////int_perc[6]/////////////////////////////////////////////////////////////////




    if(dataP <= 20071231)
    {
    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);
    incr = 0;
    if(dataA >= 20071231)
    {
    ggo = 31;
    mmo = 12;
    aao = 2007;
    incr = 1;
    arrivo.setDate(30);
    }
    else
    {
    if(mma == 12 && gga == 31)
    {
    ggo = gga;
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    ggo = gga;
    arrivo.setDate(gga);
    }
    mmo = mma;
    aao = aaa;
    }

    arrivo.setFullYear(aao);arrivo.setMonth(mmo-1);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[6] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse 2.50% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ ggo+"." +mmo +"." +aao +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }
    ggp = 31;
    mmp = 12;
    aap = 2007;
    dataP = 20071231;
    }





    ////////////////////////////////////////////////////int_perc[7]///////////////////////////////////////////////////////////////////




    if(dataA >= 20071231)
    {
    partenza.setDate(ggp);
    partenza.setMonth(mmp-1);
    partenza.setFullYear(aap);

    if(mma == 12 && gga == 31)
    {
    arrivo.setDate(30);
    incr = 1;
    }
    else
    {
    arrivo.setDate(gga);
    incr = 0;
    }
    arrivo.setMonth(mma-1);
    arrivo.setFullYear(aaa);

    diffgiorni = arrivo.getTime()- partenza.getTime();
    diffgiorni = Math.floor(diffgiorni /(1000 * 60 * 60 * 24));
    diffgiorni += incr;
    if(diffgiorni > 0)
    {
    interessi = Math.round(capitale * int_perc[7] * (diffgiorni/365));
    tot_inte += interessi;
    document.form_interessi.risultato.value += "Capitale "+ Mettipunti(capitale) + " x Tasso Interesse 3.00% x \n(dal "+ ggp+"." +mmp +"." +aap +" al "+ gga+"." +mma +"." +aaa +"=" + diffgiorni + "/365)= " + Mettipunti(interessi)+"\n\n";
    }

    }
    document.form_interessi.tot_inte.value = Mettipunti(tot_inte);
    document.form_interessi.cap_int.value = Mettipunti(capitale+tot_inte);
    document.form_interessi.capitale.value = Mettipunti(capitale);
    delete interessi;
    delete capitale;
    delete oggi;
    delete arrivo;
    delete partenza;
    }





    function Mettipunti(valore)
    {
    //Metti i punti delle migliaia
    var puntPtr = "";
    var comodo = "";
    var i = 0;
    var inc = 0;
    var mod = 0;

    comodo= valore.toString();

    if(comodo.length > 3)
    {
    mod = comodo.length % 3;
    if(mod == 0)
    {
    inc = 3;
    }
    else
    {
    inc = mod;
    }
    i = comodo.length / 3;
    puntPtr = comodo.substring(0,inc);
    puntPtr = puntPtr + "." + comodo.substring(inc,inc+3);
    mod = inc + 3;
    if( i > 2)
    {
    puntPtr = puntPtr + "." + comodo.substring(mod,mod+3);
    }
    mod = mod + 3;
    if( i > 3)
    {
    puntPtr = puntPtr + "." + comodo.substring(mod,mod+3);
    }
    return puntPtr;
    }
    else return valore;
    }
    // end -->

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.