Analyser la chaîne à ce jour avec moment.js

Réponses:

207

Vous devez utiliser la .format()fonction.

MM - Numéro du mois

MMM - Mot du mois

var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY');
var dateMonthAsWord = moment("2014-02-27T10:00:00").format('DD-MMM-YYYY');

VIOLON

David East
la source
Qu'en est-il des variables de date existantes. var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Donne une erreur de date non valide ?????
Andrew Day
3
essayez '' var dateCalendarPart = moment (date, 'AAAA / MM / JJ'); alerte (date); ''
ranjan
@AndrewDay ... "01-02-2017", "2 janvier" ou "1er février"? Momentjs ne peut pas lire dans vos pensées.
feuille du
3
Cette réponse ne fonctionne que parce que la chaîne de l'OP est dans un format de date standard. La réponse de Stephen Paul montre comment convertir n'importe quelle chaîne, étant donné un format spécifique, en une date qui peut être manipulée.
Agamemnus
365

J'ai toujours l'impression de me retrouver ici pour me rendre compte que le titre et la question ne sont pas tout à fait alignés.

Si vous voulez une date instantanée à partir d'une chaîne :

const myMoment = moment(str, 'YYYY-MM-DD')

À partir de la documentation du moment :

Au lieu de modifier le Date.prototype natif, Moment.js crée un wrapper pour l'objet Date.

Si vous souhaitez plutôt un objet Date javascript à partir d'une chaîne :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Stephen Paul
la source
16
Oui, seul celui-ci répond. Analyse de la chaîne à ce jour (ce qui signifie que l'entrée est str, la date de sortie est)
Deathangel908
@ deathangel908 Lol, il n'y a pas besoin de clarification, la question est parfaitement claire.
feuille du
20

Pas besoin de moment.js pour analyser l'entrée puisque son format est le standard:

var date = new Date('2014-02-27T10:00:00');
var formatted = moment(date).format('D MMMM YYYY');

http://es5.github.io/#x15.9.1.15

feuille
la source
1
C'est la vérité, pas besoin de moment.js si vous avez une chaîne de date ISO ... Vous pouvez également utiliser Date.parse pour être plus clair que vous travaillez avec des chaînes ISO (puisque le constructeur peut prendre d'autres formats)
Juan Mendes
3
Ne fonctionne pas dans IE8 ... Quelle surprise ... donne NaN.
Feuille du
@JuanMendes, dit votre lien, qui Date.parseappelle new Date, donc cela ne devrait pas faire de différence.
sk904861
6

le moment était parfait pour ce dont j'avais besoin. REMARQUE il ignore les heures et les minutes et ne fait que le faire si vous le laissez. C'était parfait pour moi car mon appel API ramène la date et l'heure, mais je ne me soucie que de la date.

function momentTest() {

  var varDate = "2018-01-19 18:05:01.423";
  var myDate =  moment(varDate,"YYYY-MM-DD").format("DD-MM-YYYY");
  var todayDate = moment().format("DD-MM-YYYY");  
  var yesterdayDate = moment().subtract(1, 'days').format("DD-MM-YYYY");   
  var tomorrowDate = moment().add(1, 'days').format("DD-MM-YYYY");

  alert(todayDate);

  if (myDate == todayDate) {
    alert("date is today");
  } else if (myDate == yesterdayDate) {
    alert("date is yesterday");
  } else if (myDate == tomorrowDate) {
    alert("date is tomorrow");
  } else {
    alert("It's not today, tomorrow or yesterday!");
  }
}
Gareth
la source
0
  • Comment changer n'importe quelle date de chaîne en date d'objet (également avec moment.js):

let startDate = "2019-01-16T20:00:00.000"; let endDate = "2019-02-11T20:00:00.000"; let sDate = new Date(startDate); let eDate = new Date(endDate);

  • avec moment.js:

startDate = moment(sDate); endDate = moment(eDate);

MorLavender
la source