web-dev-qa-db-ja.com

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を言う?私は間違った方法でこれに近づいていますか?

編集する

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) 
205
Warz

moment()の2番目の引数は、 display 形式ではなく、 解析 format です。

そのためには、 .format()メソッド :が必要です。

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

また、大文字小文字の区別は関係ありません。月、日、年の場合、フォーマットは大文字にする必要があります。

470

Moment.jsをインクルードし、以下のコードを使用して日付をフォーマットできます

var formatDate= 1399919400000;

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

私の出力は "13/05/2014"です

36
Akalya

出力日を元に戻すにはformatを使用します。二次モーメントの引数は構文解析のためのものです - ただし、省略した場合はtestDateによって非推奨警告が発生します。

非推奨警告:提供された値は、認識されているRFC 2822またはISO形式ではありません...

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

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

msg.innerText= s;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

<div id="msg"></div>

この警告を省略するには、解析フォーマットを指定する必要があります。

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

let s= moment(testDate, 'ddd MMM D YYYY HH:mm:ss ZZ').format('MM/DD/YYYY');

console.log(s);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
2
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
Avinash Sharma