Getting Specific Number of Days With Moment.js, Node npm and Handlbars
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.
- I installed momentjs by from the command line
npm install moment --save
- In server.js I added `var moment = require("moment");
- 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);
- In my handlebars view I used
{{days-diff "2018-12-25 00:00"}}
- I did not add moment.js in the html file's head.
node.js npm handlebars.js momentjs
add a comment |
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.
- I installed momentjs by from the command line
npm install moment --save
- In server.js I added `var moment = require("moment");
- 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);
- In my handlebars view I used
{{days-diff "2018-12-25 00:00"}}
- I did not add moment.js in the html file's head.
node.js npm handlebars.js momentjs
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
add a comment |
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.
- I installed momentjs by from the command line
npm install moment --save
- In server.js I added `var moment = require("moment");
- 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);
- In my handlebars view I used
{{days-diff "2018-12-25 00:00"}}
- I did not add moment.js in the html file's head.
node.js npm handlebars.js momentjs
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.
- I installed momentjs by from the command line
npm install moment --save
- In server.js I added `var moment = require("moment");
- 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);
- In my handlebars view I used
{{days-diff "2018-12-25 00:00"}}
- I did not add moment.js in the html file's head.
node.js npm handlebars.js momentjs
node.js npm handlebars.js momentjs
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
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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>
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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>
add a comment |
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>
add a comment |
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>
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>
answered Nov 18 '18 at 4:24
Marcos CasagrandeMarcos Casagrande
12.4k32539
12.4k32539
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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