Getting Specific Number of Days With Moment.js, Node npm and Handlbars












0















I am using moment.js in node Handlebars. I found this helper: http://moment.handlebars.solidgoldpig.com/ and it's been useful but I would like to be able to calculate the number of days between now and a specific date in the future and return the answer in days.



{{moment "12/10/2018" "from" dfrom}} returns "22 days". {{moment "12/25/2018" "from" dfrom}} returns "in a month". What I want is "38 days".



I can't figure out what needs to change in handlebars to accomplish this. I would appreciate any and all suggestions.



To follow through and provide a detailed explanation of what worked for me, I'm adding to this question. But essentially Marcos Casagrande's answer should be the accepted answer.




  1. I installed momentjs by from the command line npm install moment --save

  2. In server.js I added `var moment = require("moment");

  3. Then I copied Marcos Casagrande's answer into server.js, but added a bit of precision to the calculation. return Math.abs(moment().startOf('day').diff(moment(date).startOf('day'), 'days')+1);

  4. In my handlebars view I used {{days-diff "2018-12-25 00:00"}}

  5. I did not add moment.js in the html file's head.










share|improve this question

























  • This might be helpful... momentjs.com/docs/#/displaying/difference

    – dward
    Nov 18 '18 at 2:53











  • @dward, Thank you. What I'm having a challenge with is using moment.js with Handlebars.

    – SueJStevens
    Nov 18 '18 at 3:17











  • Are you not able to do the comparison or diff on the server? What if you mutated or mapped the array before the handlebars loop? Not sure what your constraints are. If client side, consider mapping your array or modifying object prior to binding or looping.

    – dward
    Nov 18 '18 at 3:19













  • Thanks again @dward. because I'm new to this I wasn't entirely clear what code to put where. Marcos Casagrande's answer below got be on the right track.

    – SueJStevens
    Nov 18 '18 at 19:21











  • No need to exclaim that you're new, we all start somewhere. :)

    – dward
    Nov 19 '18 at 16:15
















0















I am using moment.js in node Handlebars. I found this helper: http://moment.handlebars.solidgoldpig.com/ and it's been useful but I would like to be able to calculate the number of days between now and a specific date in the future and return the answer in days.



{{moment "12/10/2018" "from" dfrom}} returns "22 days". {{moment "12/25/2018" "from" dfrom}} returns "in a month". What I want is "38 days".



I can't figure out what needs to change in handlebars to accomplish this. I would appreciate any and all suggestions.



To follow through and provide a detailed explanation of what worked for me, I'm adding to this question. But essentially Marcos Casagrande's answer should be the accepted answer.




  1. I installed momentjs by from the command line npm install moment --save

  2. In server.js I added `var moment = require("moment");

  3. Then I copied Marcos Casagrande's answer into server.js, but added a bit of precision to the calculation. return Math.abs(moment().startOf('day').diff(moment(date).startOf('day'), 'days')+1);

  4. In my handlebars view I used {{days-diff "2018-12-25 00:00"}}

  5. I did not add moment.js in the html file's head.










share|improve this question

























  • This might be helpful... momentjs.com/docs/#/displaying/difference

    – dward
    Nov 18 '18 at 2:53











  • @dward, Thank you. What I'm having a challenge with is using moment.js with Handlebars.

    – SueJStevens
    Nov 18 '18 at 3:17











  • Are you not able to do the comparison or diff on the server? What if you mutated or mapped the array before the handlebars loop? Not sure what your constraints are. If client side, consider mapping your array or modifying object prior to binding or looping.

    – dward
    Nov 18 '18 at 3:19













  • Thanks again @dward. because I'm new to this I wasn't entirely clear what code to put where. Marcos Casagrande's answer below got be on the right track.

    – SueJStevens
    Nov 18 '18 at 19:21











  • No need to exclaim that you're new, we all start somewhere. :)

    – dward
    Nov 19 '18 at 16:15














0












0








0








I am using moment.js in node Handlebars. I found this helper: http://moment.handlebars.solidgoldpig.com/ and it's been useful but I would like to be able to calculate the number of days between now and a specific date in the future and return the answer in days.



{{moment "12/10/2018" "from" dfrom}} returns "22 days". {{moment "12/25/2018" "from" dfrom}} returns "in a month". What I want is "38 days".



I can't figure out what needs to change in handlebars to accomplish this. I would appreciate any and all suggestions.



To follow through and provide a detailed explanation of what worked for me, I'm adding to this question. But essentially Marcos Casagrande's answer should be the accepted answer.




  1. I installed momentjs by from the command line npm install moment --save

  2. In server.js I added `var moment = require("moment");

  3. Then I copied Marcos Casagrande's answer into server.js, but added a bit of precision to the calculation. return Math.abs(moment().startOf('day').diff(moment(date).startOf('day'), 'days')+1);

  4. In my handlebars view I used {{days-diff "2018-12-25 00:00"}}

  5. I did not add moment.js in the html file's head.










share|improve this question
















I am using moment.js in node Handlebars. I found this helper: http://moment.handlebars.solidgoldpig.com/ and it's been useful but I would like to be able to calculate the number of days between now and a specific date in the future and return the answer in days.



{{moment "12/10/2018" "from" dfrom}} returns "22 days". {{moment "12/25/2018" "from" dfrom}} returns "in a month". What I want is "38 days".



I can't figure out what needs to change in handlebars to accomplish this. I would appreciate any and all suggestions.



To follow through and provide a detailed explanation of what worked for me, I'm adding to this question. But essentially Marcos Casagrande's answer should be the accepted answer.




  1. I installed momentjs by from the command line npm install moment --save

  2. In server.js I added `var moment = require("moment");

  3. Then I copied Marcos Casagrande's answer into server.js, but added a bit of precision to the calculation. return Math.abs(moment().startOf('day').diff(moment(date).startOf('day'), 'days')+1);

  4. In my handlebars view I used {{days-diff "2018-12-25 00:00"}}

  5. I did not add moment.js in the html file's head.







node.js npm handlebars.js momentjs






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 18 '18 at 19:26







SueJStevens

















asked Nov 18 '18 at 2:40









SueJStevensSueJStevens

2315




2315













  • This might be helpful... momentjs.com/docs/#/displaying/difference

    – dward
    Nov 18 '18 at 2:53











  • @dward, Thank you. What I'm having a challenge with is using moment.js with Handlebars.

    – SueJStevens
    Nov 18 '18 at 3:17











  • Are you not able to do the comparison or diff on the server? What if you mutated or mapped the array before the handlebars loop? Not sure what your constraints are. If client side, consider mapping your array or modifying object prior to binding or looping.

    – dward
    Nov 18 '18 at 3:19













  • Thanks again @dward. because I'm new to this I wasn't entirely clear what code to put where. Marcos Casagrande's answer below got be on the right track.

    – SueJStevens
    Nov 18 '18 at 19:21











  • No need to exclaim that you're new, we all start somewhere. :)

    – dward
    Nov 19 '18 at 16:15



















  • This might be helpful... momentjs.com/docs/#/displaying/difference

    – dward
    Nov 18 '18 at 2:53











  • @dward, Thank you. What I'm having a challenge with is using moment.js with Handlebars.

    – SueJStevens
    Nov 18 '18 at 3:17











  • Are you not able to do the comparison or diff on the server? What if you mutated or mapped the array before the handlebars loop? Not sure what your constraints are. If client side, consider mapping your array or modifying object prior to binding or looping.

    – dward
    Nov 18 '18 at 3:19













  • Thanks again @dward. because I'm new to this I wasn't entirely clear what code to put where. Marcos Casagrande's answer below got be on the right track.

    – SueJStevens
    Nov 18 '18 at 19:21











  • No need to exclaim that you're new, we all start somewhere. :)

    – dward
    Nov 19 '18 at 16:15

















This might be helpful... momentjs.com/docs/#/displaying/difference

– dward
Nov 18 '18 at 2:53





This might be helpful... momentjs.com/docs/#/displaying/difference

– dward
Nov 18 '18 at 2:53













@dward, Thank you. What I'm having a challenge with is using moment.js with Handlebars.

– SueJStevens
Nov 18 '18 at 3:17





@dward, Thank you. What I'm having a challenge with is using moment.js with Handlebars.

– SueJStevens
Nov 18 '18 at 3:17













Are you not able to do the comparison or diff on the server? What if you mutated or mapped the array before the handlebars loop? Not sure what your constraints are. If client side, consider mapping your array or modifying object prior to binding or looping.

– dward
Nov 18 '18 at 3:19







Are you not able to do the comparison or diff on the server? What if you mutated or mapped the array before the handlebars loop? Not sure what your constraints are. If client side, consider mapping your array or modifying object prior to binding or looping.

– dward
Nov 18 '18 at 3:19















Thanks again @dward. because I'm new to this I wasn't entirely clear what code to put where. Marcos Casagrande's answer below got be on the right track.

– SueJStevens
Nov 18 '18 at 19:21





Thanks again @dward. because I'm new to this I wasn't entirely clear what code to put where. Marcos Casagrande's answer below got be on the right track.

– SueJStevens
Nov 18 '18 at 19:21













No need to exclaim that you're new, we all start somewhere. :)

– dward
Nov 19 '18 at 16:15





No need to exclaim that you're new, we all start somewhere. :)

– dward
Nov 19 '18 at 16:15












1 Answer
1






active

oldest

votes


















2














You can achieve what you want with a few lines of code:



All you need is: dateA.diff(dateB, 'days'));






moment.suppressDeprecationWarnings = true;

Handlebars.registerHelper('days-diff', date => {
return Math.abs(moment().diff(moment(date), 'days'));
});

const template = Handlebars.compile(`
Until 12/10/2018: {{days-diff "12/10/2018"}}
Until 12/25/2018: {{days-diff "12/25/2018"}}
Until 12/25/2019: {{days-diff "12/25/2019"}}
`);

console.log(template());

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Handlebars</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
<body>
</body>
</html>








share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53357416%2fgetting-specific-number-of-days-with-moment-js-node-npm-and-handlbars%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    You can achieve what you want with a few lines of code:



    All you need is: dateA.diff(dateB, 'days'));






    moment.suppressDeprecationWarnings = true;

    Handlebars.registerHelper('days-diff', date => {
    return Math.abs(moment().diff(moment(date), 'days'));
    });

    const template = Handlebars.compile(`
    Until 12/10/2018: {{days-diff "12/10/2018"}}
    Until 12/25/2018: {{days-diff "12/25/2018"}}
    Until 12/25/2019: {{days-diff "12/25/2019"}}
    `);

    console.log(template());

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Handlebars</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
    <body>
    </body>
    </html>








    share|improve this answer




























      2














      You can achieve what you want with a few lines of code:



      All you need is: dateA.diff(dateB, 'days'));






      moment.suppressDeprecationWarnings = true;

      Handlebars.registerHelper('days-diff', date => {
      return Math.abs(moment().diff(moment(date), 'days'));
      });

      const template = Handlebars.compile(`
      Until 12/10/2018: {{days-diff "12/10/2018"}}
      Until 12/25/2018: {{days-diff "12/25/2018"}}
      Until 12/25/2019: {{days-diff "12/25/2019"}}
      `);

      console.log(template());

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>Handlebars</title>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
      <body>
      </body>
      </html>








      share|improve this answer


























        2












        2








        2







        You can achieve what you want with a few lines of code:



        All you need is: dateA.diff(dateB, 'days'));






        moment.suppressDeprecationWarnings = true;

        Handlebars.registerHelper('days-diff', date => {
        return Math.abs(moment().diff(moment(date), 'days'));
        });

        const template = Handlebars.compile(`
        Until 12/10/2018: {{days-diff "12/10/2018"}}
        Until 12/25/2018: {{days-diff "12/25/2018"}}
        Until 12/25/2019: {{days-diff "12/25/2019"}}
        `);

        console.log(template());

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>Handlebars</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
        <body>
        </body>
        </html>








        share|improve this answer













        You can achieve what you want with a few lines of code:



        All you need is: dateA.diff(dateB, 'days'));






        moment.suppressDeprecationWarnings = true;

        Handlebars.registerHelper('days-diff', date => {
        return Math.abs(moment().diff(moment(date), 'days'));
        });

        const template = Handlebars.compile(`
        Until 12/10/2018: {{days-diff "12/10/2018"}}
        Until 12/25/2018: {{days-diff "12/25/2018"}}
        Until 12/25/2019: {{days-diff "12/25/2019"}}
        `);

        console.log(template());

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>Handlebars</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
        <body>
        </body>
        </html>








        moment.suppressDeprecationWarnings = true;

        Handlebars.registerHelper('days-diff', date => {
        return Math.abs(moment().diff(moment(date), 'days'));
        });

        const template = Handlebars.compile(`
        Until 12/10/2018: {{days-diff "12/10/2018"}}
        Until 12/25/2018: {{days-diff "12/25/2018"}}
        Until 12/25/2019: {{days-diff "12/25/2019"}}
        `);

        console.log(template());

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>Handlebars</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
        <body>
        </body>
        </html>





        moment.suppressDeprecationWarnings = true;

        Handlebars.registerHelper('days-diff', date => {
        return Math.abs(moment().diff(moment(date), 'days'));
        });

        const template = Handlebars.compile(`
        Until 12/10/2018: {{days-diff "12/10/2018"}}
        Until 12/25/2018: {{days-diff "12/25/2018"}}
        Until 12/25/2019: {{days-diff "12/25/2019"}}
        `);

        console.log(template());

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>Handlebars</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.8/handlebars.js"></script>
        <body>
        </body>
        </html>






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 18 '18 at 4:24









        Marcos CasagrandeMarcos Casagrande

        12.4k32539




        12.4k32539






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53357416%2fgetting-specific-number-of-days-with-moment-js-node-npm-and-handlbars%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            鏡平學校

            ꓛꓣだゔៀៅຸ໢ທຮ໕໒ ,ໂ'໥໓າ໼ឨឲ៵៭ៈゎゔit''䖳𥁄卿' ☨₤₨こゎもょの;ꜹꟚꞖꞵꟅꞛေၦေɯ,ɨɡ𛃵𛁹ޝ޳ޠ޾,ޤޒޯ޾𫝒𫠁သ𛅤チョ'サノބޘދ𛁐ᶿᶇᶀᶋᶠ㨑㽹⻮ꧬ꧹؍۩وَؠ㇕㇃㇪ ㇦㇋㇋ṜẰᵡᴠ 軌ᵕ搜۳ٰޗޮ޷ސޯ𫖾𫅀ल, ꙭ꙰ꚅꙁꚊꞻꝔ꟠Ꝭㄤﺟޱސꧨꧼ꧴ꧯꧽ꧲ꧯ'⽹⽭⾁⿞⼳⽋២៩ញណើꩯꩤ꩸ꩮᶻᶺᶧᶂ𫳲𫪭𬸄𫵰𬖩𬫣𬊉ၲ𛅬㕦䬺𫝌𫝼,,𫟖𫞽ហៅ஫㆔ాఆఅꙒꚞꙍ,Ꙟ꙱エ ,ポテ,フࢰࢯ𫟠𫞶 𫝤𫟠ﺕﹱﻜﻣ𪵕𪭸𪻆𪾩𫔷ġ,ŧآꞪ꟥,ꞔꝻ♚☹⛵𛀌ꬷꭞȄƁƪƬșƦǙǗdžƝǯǧⱦⱰꓕꓢႋ神 ဴ၀க௭எ௫ឫោ ' េㇷㇴㇼ神ㇸㇲㇽㇴㇼㇻㇸ'ㇸㇿㇸㇹㇰㆣꓚꓤ₡₧ ㄨㄟ㄂ㄖㄎ໗ツڒذ₶।ऩछएोञयूटक़कयँृी,冬'𛅢𛅥ㇱㇵㇶ𥄥𦒽𠣧𠊓𧢖𥞘𩔋цѰㄠſtʯʭɿʆʗʍʩɷɛ,əʏダヵㄐㄘR{gỚṖḺờṠṫảḙḭᴮᵏᴘᵀᵷᵕᴜᴏᵾq﮲ﲿﴽﭙ軌ﰬﶚﶧ﫲Ҝжюїкӈㇴffצּ﬘﭅﬈軌'ffistfflſtffतभफɳɰʊɲʎ𛁱𛁖𛁮𛀉 𛂯𛀞నఋŀŲ 𫟲𫠖𫞺ຆຆ ໹້໕໗ๆทԊꧢꧠ꧰ꓱ⿝⼑ŎḬẃẖỐẅ ,ờỰỈỗﮊDžȩꭏꭎꬻ꭮ꬿꭖꭥꭅ㇭神 ⾈ꓵꓑ⺄㄄ㄪㄙㄅㄇstA۵䞽ॶ𫞑𫝄㇉㇇゜軌𩜛𩳠Jﻺ‚Üမ႕ႌႊၐၸဓၞၞၡ៸wyvtᶎᶪᶹစဎ꣡꣰꣢꣤ٗ؋لㇳㇾㇻㇱ㆐㆔,,㆟Ⱶヤマފ޼ޝަݿݞݠݷݐ',ݘ,ݪݙݵ𬝉𬜁𫝨𫞘くせぉて¼óû×ó£…𛅑הㄙくԗԀ5606神45,神796'𪤻𫞧ꓐ㄁ㄘɥɺꓵꓲ3''7034׉ⱦⱠˆ“𫝋ȍ,ꩲ軌꩷ꩶꩧꩫఞ۔فڱێظペサ神ナᴦᵑ47 9238їﻂ䐊䔉㠸﬎ffiﬣ,לּᴷᴦᵛᵽ,ᴨᵤ ᵸᵥᴗᵈꚏꚉꚟ⻆rtǟƴ𬎎

            Why https connections are so slow when debugging (stepping over) in Java?