moment.isoWeekday 不是函数

moment.isoWeekday is not a function

我正在使用 codesandbox,但同样的错误一直出现在你:502: bad gateway。在终端上看,显然是因为 moment.isoWeekday 不是函数。这是为什么?

我看过 moment.js 并且我在代码中放置它的方式显然是正确的。

var http = require("http");
var moment = require("moment");
moment().format();

function getDates() {
  var start = moment.utc("1st Jan 2019");
  var end = moment.utc("31st December 2019");
  var dates = [];
  var current = start.clone();

  if (current !== moment.isoWeekday(1)) {
    current = moment().add(1, "w");
  }
  while (current.isBefore(end)) {
    current.clone.push(dates);
    current = moment.add(2, "w");
  }

  return dates;
}

http
  .createServer(function(req, res) {
    res.writeHead(200, { "Content-Type": "text/plain" });
    res.write("day,date", "\n");
    var dates = getDates();
    for (var i = 0; i < dates.length; i++) {
      res.write(moment.format("dddd, Do MMMM YYYY", dates[i]), "\n");
    }
    res.end();
  })
  .listen(8080);

我正在执行一项需要输出日期的任务。 isoWeekday 是代码的一部分,它应该检查日期是否不是 Monday,然后将一周添加到变量上,使其在下一周设置为 Monday

您的代码中有几个错误:

  1. 您在 moment.isoWeekday(1) 的片刻后忘记了 ()
  2. moment.utc("1st Jan 2019") 的输出为空,因为格式无法被时刻识别,moment.utc("1st Jan 2019", "Do MMM YYYY") 应该按预期工作
  3. 为了将 current 的克隆推送到数组 dates 上,您必须执行 dates.push(current.clone()); 而不是 current.clone.push(dates);
  4. moment.format("dddd, Do MMMM YYYY", dates[i]) 不正确,您必须 dates[i].format("dddd, Do MMMM YYYY") 而不是

工作示例:

function getDates() {
  var start = moment.utc("1st Jan 2019", "Do MMM YYYY");
  var end = moment.utc("31st December 2019", "Do MMM YYYY");
  var dates = [];
  var current = start.clone();

  if (current.isoWeekday() !== 1) {
    //current = current.add(1, "w");
    const nextMonday = 1 + current.isoWeekday() + (7 - current.isoWeekday());
    current.day(nextMonday);
  }

  while (current.isBefore(end)) {
    dates.push(current.clone());
    current = current.add(2, "w");
  }

  return dates;
}

console.log("day, date");
var dates = getDates();
for (var i = 0; i < dates.length; i++) {
  console.log(dates[i].format("dddd, Do MMMM YYYY"));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>