2017-10-16 20 views
-1

私はdate用にmoment.jsを使用する古いシステムを更新しています。Moment.JS非推奨警告

現在、このコードは書式設定の手段として使用されています。

var localTime = moment.utc(this.created_at).toDate(); 
localTime = moment(localTime).calendar(); 

私は最終localTimeに渡す前にtoISOStringを使用して、日付を変換しようとしています。しかし、私は同じ警告を得続けます。以下は

Deprecation warning: moment construction falls back to js Date. 

警告


は、XMLファイルにツイッターで生成された日付形式です。

<created_at>Mon Oct 16 10:31:26 +0000 2017</created_at> 

は、ここで私は、ISOに変換しようとします。

var isoString = moment.utc(this.created_at).toISOString(); 
localTime = moment(isoString, 'YYYY-MM-DDTHH:mm:ss.sss'); 

私は縮小さmoment.jsを更新すると、それは

2017-10-16T10:31:26.000Z 

をログに記録時間は、私は同様の警告を取得するライブラリをロケール。

moment-with-locales.min.js:1 Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info. 

はなぜ日付が、私は、コンソールにそれをログインしたとき、私はISO形式を取得していても、バックDate()に低下しています。どこが間違っていますか?

答えて

3

入力がISO 8601で認識された形式ではなく、RFC 2822形式でもないため、moment(String, String)を使用する必要があります。ここで

ワーキングサンプル:

var created_at = 'Mon Oct 16 10:31:26 +0000 2017'; 
 
var localTime = moment.utc(created_at, 'ddd MMM DD HH:mm:ss ZZ YYYY'); 
 
localTime = localTime.calendar(); 
 
console.log(localTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

パーフェクトですvar localTime = moment.utc(new Date(this.created_at)).toDate();をお試しください!とてもシンプルで、自分のためにそれを巻き込んでいました。間違いなく次回覚えています!ありがとうございました! –

0

this.created_atがMon Oct 16 10:31:26 +0000 2017

+2

これはまさに何の瞬間をしているのですか.jsは「これをやってはいけない」と言っています。 – RobG

+0

が合意した。 moment.jsはjavascriptのdate関数の使用を推奨しません。これはちょうどテキストの構文解析に関するハックです – omarwaleed

関連する問題