Welcome to the nuBuilder Forums!

Join our community by registering and logging in.
As a member, you'll get access to exclusive forums, resources, and content available only to registered users.

How to subtract dates to calculate nights

Questions related to using nuBuilder Forte.
faroinsua
Posts: 15
Joined: Sat Feb 01, 2020 4:04 pm

Re: How to subtract dates to calculate nights

Unread post by faroinsua »

Oh sorry, just adding that at the end. Thank you. Great, it worked.
joecocs
Posts: 67
Joined: Wed Jul 04, 2018 4:11 pm
Location: France

Re: How to subtract dates to calculate nights

Unread post by joecocs »

I come back with my date formulas ... :)

in the forms I manage to take a period between my 2 dates and calculate the number of weeks and days with the following formula:

Code: Select all

//Mettre à jour le champs durée en Nb de Semaine
    function subtractDateFields1(f1, f2) {
   
        var f1 = $('#'+f1).val().split("/");
        var date1 = new Date(f1[2], f1[1] - 1, f1[0]);

        var f2 = $('#'+f2).val().split("/");
        var date2 = new Date(f2[2], f2[1] - 1, f2[0]);
        
        var timeDiffSem = Math.abs(date2.getTime() - date1.getTime());
        s = Math.trunc((timeDiffSem / (1000 * 60 * 60 * 24 * 7)));
        
        return s;

    }
    
    function dureetranchestvxSem(f1, f2) {
        $('#Duree_TranchesTvxSem').val(subtractDateFields1(f1,f2)).change(); // <----- replace with your object id
    }

    
//Mettre à jour le champs durée en Nb de Jour
    function subtractDateFields2(f1, f2) {
   
        var f1 = $('#'+f1).val().split("/");
        var date1 = new Date(f1[2], f1[1] - 1, f1[0]);

        var f2 = $('#'+f2).val().split("/");
        var date2 = new Date(f2[2], f2[1] - 1, f2[0]);


        var timeDiffSem = Math.abs(date2.getTime() - date1.getTime());
        s = Math.trunc((timeDiffSem / (1000 * 60 * 60 * 24 * 7)));
        
        var timeDiffJour = Math.abs(date2.getTime() - date1.getTime());
        j = Math.round((timeDiffJour / (1000 * 60 * 60 * 24 )));
        j = j - (s * 7);
        
        return Math.round(j);

    }
    
    function dureetranchestvxJour(f1, f2) {
        $('#Duree_TranchesTvxJour').val(subtractDateFields2(f1,f2)).change(); // <----- replace with your object id
    }

On the other hand,

in another form I would like to calculate the number of months, the number of weeks and the number of days for the period between these two dates.

I tried with this code:

Code: Select all

    //Mettre à jour le champs durée en Nb de mois
    function subtractDateFields1(f1, f2) {

        var f1 = $('#'+f1).val().split("/");
        var date1 = new Date(f1[2], f1[1] - 1, f1[0]);

        var f2 = $('#'+f2).val().split("/");
        var date2 = new Date(f2[2], f2[1] - 1, f2[0]);
        
        var timeDiffMonth = Math.abs(date2.getTime() - date1.getTime());
        m = (timeDiffMonth / (1000 * 60 * 60 * 24 * 365.25 / 12)).toFixed(2);
        
        return m;
        
        }

    function dureeprojetsMonth(f1, f2) {
        $('#Duree_ProjetsMois').val(subtractDateFields1(f1,f2)).change(); // <----- replace with your object id
    }
    
    //Mettre à jour le champs durée en Nb de Semaine
    function subtractDateFields2(f1, f2) {
   
        var f1 = $('#'+f1).val().split("/");
        var date1 = new Date(f1[2], f1[1] - 1, f1[0]);

        var f2 = $('#'+f2).val().split("/");
        var date2 = new Date(f2[2], f2[1] - 1, f2[0]);
        
        var timeDiffMonth = Math.abs(date2.getTime() - date1.getTime());
        mm = (timeDiffMonth / (1000 * 60 * 60 * 24 * 365.25 / 12)).toFixed(2);
        
        var timeDiffSem = Math.abs(date2.getTime() - date1.getTime());
        ss = (timeDiffSem / (1000 * 60 * 60 * 24 * 7)).toFixed(2);
        ss = ss - (mm * 4.33);
        
        return (ss).toFixed(2);

    }
    
    function dureeprojetsSem(f1, f2) {
        $('#Duree_ProjetsSem').val(subtractDateFields2(f1,f2)).change(); // <----- replace with your object id
    }

    
//Mettre à jour le champs durée en Nb de Jour
    function subtractDateFields3(f1, f2) {
   
        var f1 = $('#'+f1).val().split("/");
        var date1 = new Date(f1[2], f1[1] - 1, f1[0]);

        var f2 = $('#'+f2).val().split("/");
        var date2 = new Date(f2[2], f2[1] - 1, f2[0]);


        var timeDiffSem = Math.abs(date2.getTime() - date1.getTime());
        s = Math.trunc((timeDiffSem / (1000 * 60 * 60 * 24 * 7)));
        
        var timeDiffJour = Math.abs(date2.getTime() - date1.getTime());
        j = Math.round((timeDiffJour / (1000 * 60 * 60 * 24 )));
        j = j - (s * 7);
        
        return Math.round(j);

    }
    
    function dureeprojetsJour(f1, f2) {
        $('#Duree_ProjetsJour').val(subtractDateFields3(f1,f2)).change(); // <----- replace with your object id
    }
But, I block on the calculation of the number of weeks ... :(

if you have an idea
kev1n
nuBuilder Team
Posts: 4581
Joined: Sun Oct 14, 2018 6:43 pm
Has thanked: 76 times
Been thanked: 536 times
Contact:

Re: How to subtract dates to calculate nights

Unread post by kev1n »

You can try this function to calculate the number of weeks between two days:

Code: Select all

function weeksBetween(d1, d2) {
    return Math.round((d2 - d1) / (7 * 24 * 60 * 60 * 1000));
}
joecocs
Posts: 67
Joined: Wed Jul 04, 2018 4:11 pm
Location: France

Re: How to subtract dates to calculate nights

Unread post by joecocs »

thanks,
that's already what i do,

but for a given period i want the number of months then on the rest the number of weeks then on the rest the number of days.

that's what worries me
kev1n
nuBuilder Team
Posts: 4581
Joined: Sun Oct 14, 2018 6:43 pm
Has thanked: 76 times
Been thanked: 536 times
Contact:

Re: How to subtract dates to calculate nights

Unread post by kev1n »

This is not a nuBuilder-specific question, maybe you could ask/search at stackoverflow. Normally you get answers there very quickly.
joecocs
Posts: 67
Joined: Wed Jul 04, 2018 4:11 pm
Location: France

Re: How to subtract dates to calculate nights

Unread post by joecocs »

Thanks for the advice,

I found the solution for the calculation on the dates by mixing your code and using a method of DIV and MODULO in Js
Post Reply