将字符串变量传递给Moment.js减去函数

时间:2018-11-28 11:05:22

标签: javascript node.js momentjs

我正在构建一个具有下拉菜单的网站,并且根据时间范围(天,周,月,季度,年),将显示用户选择其他结果的时间。 除了编写5个不同的函数外,我想编写一个将时间范围作为参数并将其传递给moment()。subtract()函数的函数。代码如下。

let timeFrameString = '"' + timeframe + 's"';
let dateTo = moment().subtract(1, timeFrameString).format('YYYY-MM-DD');

这不起作用。我已经在控制台上记录了timeFrameString,如果我不使用变量,它的显示方式与我键入的内容完全相同,并且我输入了“ days”一词也运行了完全相同的代码,因此效果很好。

有什么建议吗?

3 个答案:

答案 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

Nuwan Attanayake 解决方案为您工作

,并且您想同时subtract multiple different keys,可以将它们作为对象文字传递。

moment().subtract(7, 'days').subtract(1, 'months'); // with chaining
moment().subtract({days:7,months:1}); // with object literal