2013-04-13 3 views
145

У меня есть строка в следующем формате:формат даты с moment.js

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

Я хотел бы с помощью moment.js получить его в этом формате mm/dd/yyyy : 04/12/2013 для отображения.

Я пытался сделать это с помощью этого метода,

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

Каких ошибок и говорит there is no such method called replace? Я подхожу к этому неправильно?

Edit:

Я должен также упомянуть, что я использую предварительно упаковывают версию moment.js, упакованного для meteor.js

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

трассировки стека:

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) 
+0

Вы используете 'заменить()' в коде? Если нет, плагин, используемый вами, ненадлежащим образом вызывает не существующий метод. – cereallarceny

+0

Я обновил свой вопрос с точной ошибкой и трассировкой стека с помощью метода, который вызывает «replace». Я вообще не звоню вообще без замены – Warz

ответ

337

В Второй аргумент moment() - это parsing format, а не дисплей формат.

Для этого, вы хотите .format() method:

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

Также отметим, что случай действительно имеет значение. В течение месяца, месяца и месяца формат должен быть прописным.

+0

Отлично. Сначала я попытался использовать его как этот момент(). Format(), который не удался. Спасибо – Warz

+0

var obj = {end_date: moment ($ scope.activity.endDate) .format ('MM/DD/YYYY')}; –

+0

@MichaelCalkins Извините. Для чего это? И почему дополнительная ссылка на AngularJS ('$ scope')? –

26

Включите moment.js и используя приведенный ниже код, который вы можете форматировать ваши даты

var formatDate= 1399919400000; 

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

Мой выход на «13/05/2014»

+1

Как это можно отменить? Я имею в виду, если у меня есть более поздний формат и вы хотите изменить его на первый. –

+1

@ArslanTariq вы можете использовать 'momentObject.valueOf()', чтобы получить миллисекунды с эпохи. – FaithReaper