遍历 NodeJS 中的一系列日期

新手上路,请多包涵

我想遍历一系列日历日期,每次迭代都是 +1 天。我会在 Java 中使用围绕 JodaTime 构建的东西——NodeJS 中有类似的东西吗?

原文由 nwaltham 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 396
2 个回答

您可以在 node.js 应用程序中使用 moment.js

 npm install moment

然后你可以很容易地做到这一点:

 var moment = require('moment');

var a = moment('2013-01-01');
var b = moment('2013-06-01');

// If you want an exclusive end date (half-open interval)
for (var m = moment(a); m.isBefore(b); m.add(1, 'days')) {
  console.log(m.format('YYYY-MM-DD'));
}

// If you want an inclusive end date (fully-closed interval)
for (var m = moment(a); m.diff(b, 'days') <= 0; m.add(1, 'days')) {
  console.log(m.format('YYYY-MM-DD'));
}

嗯…这看起来很像您已经在自己的答案中编写的代码。 Moment.js 是一个更受欢迎的库,具有大量功能,但我想知道哪个性能更好?也许你可以测试并让我们知道。 :)

但这些都没有 JodaTime 做的那么多。为此,您需要一个在 JavaScript 中实现 TZDB 的库。我 在这里列出了一些

此外,请注意 JavaScript 日期的一般问题。这也会影响 NodeJS。

原文由 Matt Johnson-Pint 发布,翻译遵循 CC BY-SA 3.0 许可协议

我建议更改 Matt 之前的回复。他的代码将导致 a 对象发生突变。试试这个…

 var moment = require('moment');
var a = moment('2013-01-01');
var b = moment('2013-06-01');

for (var m = moment(a); m.isBefore(b); m.add(1, 'days')) {
    console.log(m.format('YYYY-MM-DD'));
}

原文由 ice.nicer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题