moment.js로 날짜 형식 지정


262

이 형식의 문자열이 있습니다.

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? 내가 잘못 접근하고 있습니까?

편집하다:

또한 meteor.js 용으로 패키지 된 moment.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) 

1
replace()코드에서 사용 하고 있습니까? 그렇지 않은 경우 사용하는 플러그인이 존재하지 않는 메소드를 부적절하게 호출하는 것입니다.
cereallarceny

'replace'를 호출하는 메소드로 정확한 오류 및 스택 추적으로 내 질문을 업데이트했습니다. 나는 직접 교체를 전혀 부르지 않았다
Warz

답변:


591

에 제 2 인수는 moment()A는 구문 분석 형식 보다는 디스플레이 형식입니다.

이를 위해 다음과 같은 .format()방법 을 원합니다 .

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

또한 사건은 중요합니다. 월, 일 및 년의 경우 형식은 대문자 여야합니다.


우수한. 처음에는이 moment (). format ()과 같이 사용하려고했지만 실패했습니다. 감사합니다
Warz

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

@MichaelCalkins 죄송합니다. 저건 뭘위한거야? 그리고 왜 AngularJS ( $scope)에 대한 추가 참조가 필요 합니까?
Jonathan Lonowski

@JonathanLonowski 변수가 될 수 있습니다. 나는 프로그래밍을 하고이 대답을 찾고있었습니다. 단지 예입니다.
마이클 J. 칼 킨스

형식을 사용할 때마다 date ()를 호출 할 수 없습니다. 그래서 하루를 ( "DD-MM-YYYY") 형식에서 빼내기 위해 일종의 하위 문자열 구성을 사용해야했습니다.
Henk Jansen

49

moment.js를 포함시키고 아래 코드를 사용하여 날짜를 형식화 할 수 있습니다

var formatDate= 1399919400000;

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

내 출력은 "13/05/2014"입니다


1
어떻게 되돌릴 수 있습니까? 나중에 형식이 있고 첫 번째 형식으로 변경하려면 의미합니다.
Arslan Tariq

2
@ArslanTariq momentObject.valueOf()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
이 코드가 OP 문제를 해결하는 방법 을 설명하면 도움이 될 것 입니다.
Robert Columbia

5

출력 날짜를 확인하려면을 사용하십시오 format. 두 번째 순간 논쟁은 파싱을위한 것이지만, 생략 testDate하면 사용 중단 경고가 발생합니다.

지원 중단 경고 : 제공된 값이 인식 된 RFC2822 또는 ISO 형식이 아닙니다 ...

이 경고를 생략하려면 구문 분석 형식을 제공해야합니다


먼저, 날짜 형식의 식별자 (형식)를 제공 한 다음 원하는 형식을 제공해야합니다. 좋은 예입니다.
Sudhir K Gupta
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.