我正在构建一个具有下拉菜单的网站,并且根据时间范围(天,周,月,季度,年),将显示用户选择其他结果的时间。 除了编写5个不同的函数外,我想编写一个将时间范围作为参数并将其传递给moment()。subtract()函数的函数。代码如下。
let timeFrameString = '"' + timeframe + 's"';
let dateTo = moment().subtract(1, timeFrameString).format('YYYY-MM-DD');
这不起作用。我已经在控制台上记录了timeFrameString,如果我不使用变量,它的显示方式与我键入的内容完全相同,并且我输入了“ days”一词也运行了完全相同的代码,因此效果很好。
有什么建议吗?
答案 0 :(得分:1)
尝试一下
let timeFrameString = timeframe + 's';
let dateTo = moment().subtract(1, timeFrameString).format('YYYY-MM-DD');
答案 1 :(得分:1)
您不需要附加双引号。您可以将时间范围作为参数传递,并按以下方式获取toDate作为标准时间范围。例如
function getDateForTimeFrame(timeFrame) {
return moment().subtract(1, timeFrame).format('YYYY-MM-DD');
}
let timeFrame = "month"; // "day", "week"
let dateTo = getDateForTimeFrame(timeFrame );
console.log('dateTo :', dateTo)
答案 2 :(得分:0)
Edited
,并且您想同时subtract multiple different keys
,可以将它们作为对象文字传递。
moment().subtract(7, 'days').subtract(1, 'months'); // with chaining
moment().subtract({days:7,months:1}); // with object literal