使用Moment.js,Node npm和Handlbars获得特定的天数

时间:2018-11-18 02:40:57

标签: node.js npm handlebars.js momentjs

我正在节点把手中使用moment.js。我找到了这个帮助程序:http://moment.handlebars.solidgoldpig.com/,它非常有用,但是我希望能够计算从现在到将来的特定日期之间的天数,并以天为单位返回答案。

{{moment "12/10/2018" "from" dfrom}}返回“ 22天”。 {{moment "12/25/2018" "from" dfrom}}返回“一个月内”。我想要的是“ 38天”。

我无法弄清楚需要更改哪些把手才能完成此操作。我将不胜感激所有建议。

为了继续进行并提供对我有用的详细解释,我添加了这个问题。但本质上,Marcos Casagrande的答案应该是公认的答案。

  1. 我是从命令行npm install moment --save安装了momentjs的
  2. 在server.js中,我添加了“ var moment = require(“ moment”);
  3. 然后,我将Marcos Casagrande的答案复制到server.js中,但是在计算上增加了一些精度。 return Math.abs(moment().startOf('day').diff(moment(date).startOf('day'), 'days')+1);
  4. 在车把视图中,我使用了{{days-diff "2018-12-25 00:00"}}
  5. 我没有在html文件的头部添加moment.js。

1 个答案:

答案 0 :(得分:2)

您可以通过几行代码来实现所需的目标:

您需要做的是: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>