định dạng ngày với khoảnh khắc


262

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

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

Tôi muốn sử dụng Moment.js lấy nó ở định dạng này mm/dd/yyyy : 04/12/2013để hiển thị.

Tôi đã cố gắng thực hiện 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? Có phải tôi đang tiếp cận điều này một cách sai lầm?

Biên tập:

Tôi cũng nên đề cập rằng tôi đang sử dụng một phiên bản được đóng gói sẵn của Moment.js, được đóng gói cho metseng.js

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

Dấu vết ngăn xếp:

 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
Bạn đang sử dụng replace()trong mã của bạn? Nếu không, plugin bạn sử dụng đang gọi một phương thức không tồn tại.
cereallarceny

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 với phương thức gọi 'thay thế'. Tôi hoàn toàn không trực tiếp gọi thay thế
Warz

Câu trả lời:


591

Đối số thứ 2 moment()định dạng phân tích cú pháp thay vì định dạng hiển thị .

Cho rằng, bạn muốn .format()phương thức :

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

Cũng lưu ý rằng trường hợp không quan trọng. Đối với Tháng, Ngày của Tháng và Năm, định dạng nên được viết hoa.


Thông minh. Ban đầu tôi đã thử sử dụng nó như khoảnh khắc này (). Format (), nhưng không thành công. Cảm ơn
Warz

var obj = {end_date: khoảnh khắc ($ scope.activity.endDate) .format ('MM / DD / YYYY')};
Michael J. Calkins

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

@JonathanLonowski Đó có thể là bất kỳ biến nào. Tôi tình cờ được lập trình và tìm kiếm câu trả lời này. Chỉ là một ví dụ.
Michael J. Calkins

Bất cứ khi nào tôi sử dụng định dạng, tôi không thể gọi ngày () trên đó. Vì vậy, tôi đã phải sử dụng một số loại cấu trúc chuỗi con để lấy ngày ra khỏi định dạng ("DD-MM-YYYY").
Henk Jansen

49

Bao gồm khoảnh khắc.js và sử dụng mã dưới đây, bạn có thể định dạng ngày của mình

var formatDate= 1399919400000;

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

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


1
Làm thế nào tôi có thể đả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.
Arslan Tariq

2
@ArslanTariq bạn có thể sử dụng momentObject.valueOf()để nhận được mili giây từ epoch.
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"

1
Sẽ rất hữu ích nếu bạn giải thích cách mã này giải quyết vấn đề của OP.
Robert Columbia

5

Để từ ngày đầu ra sử dụng format. Đối số khoảnh khắc thứ hai là để phân tích cú pháp - tuy nhiên nếu bạn bỏ qua nó thì bạn testDatesẽ gây ra cảnh báo không dùng nữa

Cảnh báo khấu hao: giá trị được cung cấp không ở định dạng RFC2822 hoặc ISO được công nhận ...

để bỏ qua cảnh báo này, bạn nên cung cấp định dạng phân tích cú pháp


Tuyệt vời, đầu tiên tôi phải cung cấp định danh (định dạng) định dạng ngày của chúng tôi sau đó định dạng mong muốn. ví dụ tốt đẹp
Sudhir K Gupta
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.