web-dev-qa-db-fra.com

Comment définir la date d'un objet moment.js existant

Disons que j'ai un objet moment existant:

var m = moment(); // this will default to now

et voulez le mettre à jour avec un nouvel objet Date, mais SANS REMPLACER tout l'objet. Par exemple. Ce n'est pas une solution acceptable pour moi:

m = moment(new Date());

La seule solution que je puisse trouver dans ces documents est d'utiliser la méthode set:

m.set({'year': 2013, 'month': 3});

mais de cette façon, nous aurons besoin de scinder notre objet Date existant en Paix comme ceci:

var myDate = new Date();
var newDate = moment(myDate);

var splittedDate = {
    year: newDate.get('year'),
    month: newDate.get('month'),
    date: newDate.get('date'),
    hour: newDate.get('hour'),
    minute: newDate.get('minute'),
    second: newDate.get('second'),
    millisecond: newDate.get('millisecond')
};

m.set(splittedDate);

Mais cela me semble moche. Peut-être que quelqu'un peut suggérer une meilleure solution?

13
Eduard Ghazanchyan

Cela peut être un peu en retard, mais vous pouvez transformer votre nouvelle date en un objet (newDate.toObject()) et la transmettre à la méthode set de votre objet moment précédent:

var m = moment(); // Initial moment object

// Create the new date
var myDate = new Date();
var newDate = moment(myDate);

// Inject it into the initial moment object
m.set(newDate.toObject());
17
Arnaud

Utilisez simplement votre objet Date en tant que paramètre:

var d = new Date();
var m = moment(d);

Et voila , votre objet moment est défini sur la même heure que votre objet Date.

1
Antoine