2013-04-13 45 views
145

Tôi có một chuỗi ở định dạng này:ngày định dạng với moment.js

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

Tôi muốn sử dụng moment.js nhận được nó ở định dạng này mm/dd/yyyy : 04/12/2013 để trưng bày.

tôi đã cố gắng để làm điều đó bằng phương pháp này,

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

Những lỗi và nói there is no such method called replace? Tôi đang tiếp cận điều này theo cách sai?

Edit:

Tôi cũng nên đề cập đến mà tôi đang sử dụng một phiên bản tiền đóng gói của moment.js, đóng gói cho 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) 
+0

Bạn đang sử dụng 'replace()' trong mã của bạn? Nếu không, plugin bạn đang sử dụng không thích hợp gọi phương thức không tồn tại. – cereallarceny

+0

Tôi đã cập nhật câu hỏi của mình với lỗi chính xác và theo dõi ngăn xếp bằng phương thức gọi là 'thay thế'. Tôi không trực tiếp gọi thay thế ở tất cả – Warz

Trả lời

337

Các Đối số thứ 2 cho moment()parsing format thay vì hiển thị hiển thị định dạng.

Cho rằng, bạn muốn .format() method:

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

Cũng lưu ý trường hợp đó không thành vấn đề. Trong tháng, ngày trong tháng và năm, định dạng phải là chữ hoa.

+0

Tuyệt vời. Ban đầu tôi đã cố gắng sử dụng nó như thời điểm này(). Format(), thất bại. Cảm ơn – Warz

+0

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

+0

@MichaelCalkins Xin lỗi. Cái đó là gì? Và, tại sao tham chiếu bổ sung cho AngularJS ('$ scope')? –

26

Bao gồm moment.js và sử dụng mã bên dưới, bạn có thể định dạng ngày của bạn

var formatDate= 1399919400000; 

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

đầu ra của tôi là "13/05/2014"

+1

Tôi làm cách nào để đảo ngược điều đó? Ý tôi là nếu tôi có định dạng sau và muốn thay đổi nó thành định dạng đầu tiên. –

+1

@ArslanTariq bạn có thể sử dụng 'momentObject.valueOf()' để nhận mili giây từ thời đại. – FaithReaper