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
。
您的代码中有几个错误:
- 您在
moment.isoWeekday(1)
的片刻后忘记了 ()
moment.utc("1st Jan 2019")
的输出为空,因为格式无法被时刻识别,moment.utc("1st Jan 2019", "Do MMM YYYY")
应该按预期工作
- 为了将
current
的克隆推送到数组 dates
上,您必须执行 dates.push(current.clone());
而不是 current.clone.push(dates);
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>
我正在使用 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
。
您的代码中有几个错误:
- 您在
moment.isoWeekday(1)
的片刻后忘记了()
moment.utc("1st Jan 2019")
的输出为空,因为格式无法被时刻识别,moment.utc("1st Jan 2019", "Do MMM YYYY")
应该按预期工作- 为了将
current
的克隆推送到数组dates
上,您必须执行dates.push(current.clone());
而不是current.clone.push(dates);
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>