web-dev-qa-db-fra.com

Formatez la date et soustrayez les jours en utilisant Moment.js

Je voudrais qu'une variable contienne la date d'hier au format DD-MM-YYYY en utilisant Moment.js. Donc, si aujourd'hui est le 15-04-2015, j'aimerais soustraire un jour et avoir le 14-4-2015.

J'ai essayé quelques combinaisons comme celle-ci:

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

et ça:

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

et aussi ceci:

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

Mais je ne comprends pas ...

80
beaumondo

Vous avez plusieurs bizarreries. Le premier a été édité dans votre message, mais il avait à voir avec l'ordre dans lequel les méthodes étaient appelées.

.format renvoie une chaîne. String n'a pas de méthode subtract.

Le deuxième problème est que vous soustrayez la journée, mais ne la sauvegardez pas en tant que variable.

Votre code devrait alors ressembler à:

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

Cependant, vous pouvez enchaîner cela ensemble; cela ressemblerait à:

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

La différence est que nous fixons la date de début aux changements que vous apportez le jour du début, car le moment est destructif.

148
ndugger
startdate = moment().subtract(1, 'days').format('DD-MM-YYYY');
9
M. Adam Kendall

Essaye ça:

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

Cela vous donnera 14-04-2015 - aujourd'hui 15.04.2015

Alternativement, si votre version de momentjs est inférieure à 2.8.0, vous pouvez utiliser:

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

Au lieu de cela:

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

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

3
Jethik

Je pense que vous l'avez eu dans cette dernière tentative, il vous suffit de saisir la chaîne .. dans la console de 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
lecstor

Dans 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
Raphael Vitor
var date = new Date();

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

Maintenant, vous pouvez formater comment vous voulez voir cette date ou vous pouvez comparer cette date avec une autre etc.

toDate () function est le point.

1
canmustu