formatee la fecha con moment.js

262

Tengo una cadena en este formato:

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

Me gustaría usar moment.js para obtenerlo en este formato mm/dd/yyyy : 04/12/2013para su visualización.

Traté de hacerlo usando este método,

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

¿Qué errores y dice there is no such method called replace? ¿Me estoy acercando a esto de la manera incorrecta?

Editar:

También debo mencionar que estoy usando una versión preempaquetada de moment.js, empaquetada para meteor.js

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

Seguimiento de pila:

 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) 
Warz
fuente
1
¿Estás usando replace()en tu código? De lo contrario, el complemento que está utilizando está llamando inapropiadamente a un método inexistente.
cereallarceny
He actualizado mi pregunta con error exacto y seguimiento de pila con el método que llama 'reemplazar'. No estoy llamando directamente a reemplazar en absoluto
Warz

Respuestas:

591

El segundo argumento moment()es un formato de análisis en lugar de un formato de visualización .

Para eso, quieres el .format()método :

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

También tenga en cuenta que el caso sí importa. Para el mes, día del mes y año, el formato debe estar en mayúscula.

Jonathan Lonowski
fuente
Excelente. Inicialmente intenté usarlo como este momento (). Format (), que falló. Gracias
Warz
var obj = {end_date: moment ($ scope.activity.endDate) .format ('MM / DD / AAAA')};
Michael J. Calkins
@MichaelCalkins Lo siento. ¿Para que es eso? Y, ¿por qué la referencia adicional a AngularJS ( $scope)?
Jonathan Lonowski
@ JonathanLonowski Eso podría ser cualquier variable. Estaba programando y buscando esta respuesta. Solo un ejemplo.
Michael J. Calkins
Cada vez que uso el formato, no puedo llamar a date () en él. Así que tuve que usar algún tipo de construcción de subcadena para aprovechar el día en un formato ("DD-MM-AAAA").
Henk Jansen
49

Incluya moment.js y utilice el siguiente código para formatear su fecha

var formatDate= 1399919400000;

var responseDate = moment(formatDate).format('DD/MM/YYYY');

Mi salida es "13/05/2014"

Akalya
fuente
1
¿Cómo puedo revertir eso? Quiero decir, si tengo el formato posterior y quiero cambiarlo al primero.
Arslan Tariq
2
@ArslanTariq puede usar momentObject.valueOf()para obtener milisegundos de época.
WesternGun
8
moment().format();                                // "2019-08-12T17:52:17-05:00" (ISO 8601, no fractional seconds)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Monday, August 12th 2019, 5:52:00 pm"
moment().format("ddd, hA");                       // "Mon, 5PM"
Avinash Sharma
fuente
1
Sería útil si explicara cómo este código resuelve el problema del OP.
Robert Columbia
5

Para usar la fecha de salida de salida format. El argumento del segundo momento es para analizar; sin embargo, si lo omite testDate, provocará una advertencia de desaprobación

Advertencia de desaprobación: el valor proporcionado no está en un formato RFC2822 o ISO reconocido ...

para omitir esta advertencia, debe proporcionar el formato de análisis

Kamil Kiełczewski
fuente
Genial, primero tengo que proporcionar el identificador (formato) de nuestro formato de fecha y luego el formato de deseo. buen ejemplo
Sudhir K Gupta