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


119

我想要一个变量DD-MM-YYYY使用Moment.js 格式保存昨天的日期。因此,如果今天是2015年5月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')

但是我不明白...


格式化之前是否尝试过减去?格式化它只会给您一个字符串...
ndugger 2015年

moment()。subtract(10,“ days”)而不只是“ d”吗?
leopik 2015年

将昨天的日期“保留”为date,并在需要显示时将其转换为格式化的字符串。
Pointy 2015年

@NickDugger我在那个问题上犯了一个错误,最后一次尝试应该说startdate = moment(); 在第一行。我已经编辑了,谢谢
beaumondo

format()是使它成为字符串的函数。您应该最后这样做。
jwatts1980

Answers:


208

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

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


13
subtract实际上,moment.js 具有破坏性。“通过减去时间来计算原始力矩”。看到这里:momentjs.com/docs
#


5

试试这个:

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

这将给您14-04-2015- 今天是2015年5月4日

另外,如果您的momentjs版本低于2.8.0,则可以使用:

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

代替这个:

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


2

我想您是在最后一次尝试中获得了它,您只需要在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"

2

在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
``



2
var date = new Date();

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

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

toDate()函数就是重点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.