formato data con moment.js


262

Ho una stringa in questo formato:

var testDate = "Fri Apr 12 2013 19:08:55 GMT-0500 (CDT)"

Vorrei usare moment.js per ottenerlo in questo formato mm/dd/yyyy : 04/12/2013per la visualizzazione.

Ho provato a farlo usando questo metodo,

moment(testDate,'mm/dd/yyyy');

Quali errori e dice there is no such method called replace? mi sto avvicinando a questo nel modo sbagliato?

Modificare:

Dovrei anche menzionare che sto usando una versione preconfezionata di moment.js, confezionata per meteor.js

Object [object Date] has no method 'replace' : The Exact error from the console

Stack Trace:

 at makeDateFromStringAndFormat (http://127.0.0.1:3000/packages/moment/lib/moment/moment.js?b4e3ac4a3d0794023a4410e7941c3e179398b5b0:539:29)
    at moment (http://127.0.0.1:3000/packages/moment/lib/moment/moment.js?b4e3ac4a3d0794023a4410e7941c3e179398b5b0:652:24)
    at populateProfileForEdit (http://127.0.0.1:3000/client/views/home/administration/directory/profiles/profiles.js?acfff908a6a099f37312f62892a22b40f82e5e0f:147:25)
    at Object.Template.profile_personal.rendered (http://127.0.0.1:3000/client/views/home/administration/directory/profiles/profiles.js?acfff908a6a099f37312f62892a22b40f82e5e0f:130:13)
    at Spark.createLandmark.rendered (http://127.0.0.1:3000/packages/templating/deftemplate.js?b622653d121262e50a80be772bf5b1e55ab33881:126:42)
    at http://127.0.0.1:3000/packages/spark/spark.js?45c746f38023ceb80745f4b4280457e15f058bbc:384:32
    at Array.forEach (native)
    at Function._.each._.forEach (http://127.0.0.1:3000/packages/underscore/underscore.js?867d3653d53e9c7a171483edbcad9670e12288c7:79:11)
    at http://127.0.0.1:3000/packages/spark/spark.js?45c746f38023ceb80745f4b4280457e15f058bbc:382:7
    at _.extend.flush (http://127.0.0.1:3000/packages/deps/deps.js?9642a93ae1f8ffa8eb1c2475b198c764f183d693:231:11) 

1
Stai usando il replace()tuo codice? In caso contrario, il plug-in che stai utilizzando chiama in modo inappropriato un metodo inesistente.
cereallarceny,

Ho aggiornato la mia domanda con errore esatto e traccia stack con il metodo che chiama 'sostituisci'. Non sto chiamando direttamente sostituisci affatto
Warz

Risposte:


591

Il secondo argomento moment()è un formato di analisi piuttosto che un formato di visualizzazione .

Per questo, vuoi il .format()metodo :

moment(testDate).format('MM/DD/YYYY');

Si noti inoltre che il caso è importante. Per mese, giorno del mese e anno, il formato deve essere in maiuscolo.


Eccellente. Inizialmente ho provato a usarlo in questo momento (). Format (), che non è riuscito. Grazie
Warz,

var obj = {end_date: moment ($ scope.activity.endDate) .format ('MM / GG / AAAA')};
Michael J. Calkins,

@MichaelCalkins Siamo spiacenti. A cosa serve? E perché il riferimento aggiuntivo ad AngularJS ( $scope)?
Jonathan Lonowski l'

@JonathanLonowski Potrebbe essere una variabile. Mi è capitato di programmare e cercare questa risposta. Solo un esempio
Michael J. Calkins,

Ogni volta che utilizzo il formato, non riesco a chiamare date () su di esso. Quindi ho dovuto usare una sorta di costrutto di sottostringa per afferrare la giornata in un formato ("GG-MM-AAAA").
Henk Jansen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.