使用Moment.js格式化日期和减去天数

时间:2015-04-15 13:40:13

标签: javascript date momentjs

我希望变量能够使用Moment.js以DD-MM-YYYY格式保存昨天的日期。因此,如果今天是2015年4月15日,我想减去一天,并且有14-4-2015。

我尝试过这样的一些组合:

startdate = moment().format('DD-MM-YYYY');
startdate.subtract(1, 'd');

和此:

startdate = moment().format('DD-MM-YYYY').subtract(1, 'd');

还有这个:

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY')

但我没有得到它......

7 个答案:

答案 0 :(得分:137)

你有多个奇怪的事情发生。第一个已在您的帖子中进行了编辑,但它与调用方法的顺序有关。

.format返回一个字符串。字符串没有subtract方法。

第二个问题是你要减去这一天,但实际上并没有将其保存为变量。

您的代码应该如下所示:

var startdate = moment();
startdate = startdate.subtract(1, "days");
startdate = startdate.format("DD-MM-YYYY");

然而,你可以把它连在一起;这看起来像是:

var startdate = moment().subtract(1, "days").format("DD-MM-YYYY");

不同之处在于,我们将startdate设置为您在startdate上所做的更改,因为时刻具有破坏性。

答案 1 :(得分:8)

startdate = moment().subtract(1, 'days').format('DD-MM-YYYY');

答案 2 :(得分:3)

试试这个:

var duration = moment.duration({'days' : 1});
moment().subtract(duration).format('DD-MM-YYYY');

这将为您提供14-04-2015 - 今天是2015年4月15日

或者,如果你的momentjs版本低于2.8.0,你可以使用:

startdate = moment().subtract('days', 1).format('DD-MM-YYYY');

而不是:

startdate = moment().subtract(1, 'days').format('DD-MM-YYYY');

答案 3 :(得分:1)

我认为你在最后一次尝试中得到了它,你只需要在Chrome控制台中抓取字符串..

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY');
"14-04-2015"

startdate = moment();
startdate.subtract(1, 'd');
myString = startdate.format('DD-MM-YYYY');
"14-04-2015"
myString
"14-04-2015"

答案 4 :(得分:1)

startdate = moment().subtract(1, 'days').startOf('day')

答案 5 :(得分:1)

在angularjs moment =“ ^ 1.3.0”

moment('15-01-1979', 'DD-MM-YYYY').subtract(1,'days').format(); //14-01-1979
or
moment('15-01-1979', 'DD-MM-YYYY').add(1,'days').format(); //16-01-1979
``



答案 6 :(得分:1)

var date = new Date();

var targetDate = moment(date).subtract(1, 'day').toDate(); // date object

现在,您可以设置看待日期的格式,也可以将其与其他日期进行比较。

toDate()函数就是重点。