Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Moment.js设置日期格式并减去天数_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 使用Moment.js设置日期格式并减去天数

Javascript 使用Moment.js设置日期格式并减去天数,javascript,date,momentjs,Javascript,Date,Momentjs,我希望使用Moment.js以DD-MM-YYYY格式保存昨天的日期。所以如果今天是2015年4月15日,我想减去一天,得到2015年4月14日 我尝试过以下几种组合: startdate = moment().format('DD-MM-YYYY'); startdate.subtract(1, 'd'); 这是: startdate = moment().format('DD-MM-YYYY').subtract(1, 'd'); 还有: startdate = moment(); st

我希望使用Moment.js以
DD-MM-YYYY
格式保存昨天的日期。所以如果今天是2015年4月15日,我想减去一天,得到2015年4月14日

我尝试过以下几种组合:

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')
但我不明白…

试试这个:

startdate = moment().subtract(1, 'days').format('DD-MM-YYYY');
var duration = moment.duration({'days' : 1});
moment().subtract(duration).format('DD-MM-YYYY');
这将为您提供
14-04-2015
-今天是15-04-2015

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

startdate = moment().subtract('days', 1).format('DD-MM-YYYY');
与此相反:

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

我想你在最后一次尝试中已经成功了,你只需要抓住绳子。。在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"

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

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

第二个问题是你在减去一天,但实际上并没有把它作为一个变量保存

那么,您的代码应该如下所示:

var startdate = moment();
startdate = startdate.subtract(1, "days");
startdate = startdate.format("DD-MM-YYYY");
var startdate = moment().subtract(1, "days").format("DD-MM-YYYY");
但是,您可以将其链接在一起;这看起来像:

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上所做的更改,因为力矩具有破坏性。

startdate=moment()。减去(1,“天”).startOf(“天”)
在angularjs moment=“^1.3.0”中

现在,你可以格式化你想看这个日期的方式,或者你可以将这个日期与另一个日期进行比较等等


toDate()
函数就是重点。

格式化之前您是否尝试过减法?格式化它只会给你一个字符串…矩()。减去(10,“天”)而不只是“d”也许?“保留”昨天的日期作为日期,并在需要显示时将其转换为格式化字符串。@NickDugger我在这个问题上犯了一个错误,最后一次尝试应该说startdate=矩();在第一行。我现在编辑了它,谢谢
format()
是使它成为字符串的函数。你应该这样做。js
subtract
实际上是破坏性的。“通过减去时间来改变原始时刻”。请看这里: