使用 Moment.js、Node npm 和 Handlebars 获取特定的天数

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

我在节点 Handlebars 中使用 moment.js。我找到了这个助手:http://moment.handlebars.solidgoldpig.com/,它很有用,但我希望能够计算从现在到未来特定日期之间的天数,以及 return 以天为单位的答案。

{{moment "12/10/2018" "from" dfrom}} returns “22 天”。 {{moment "12/25/2018" "from" dfrom}} returns "in a month"。我要的是“38天”。

我无法弄清楚车把需要更改什么才能实现此目的。我将不胜感激任何和所有建议。

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

  1. 我通过命令行安装了 momentjs npm install moment --save
  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。

你可以通过几行代码实现你想要的:

您只需要: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>