Moment: Momemtjsの日付変換エラーが発生します。

作成日 2016年10月08日  ·  18コメント  ·  ソース: moment/moment

問題の説明と再現手順:
console.log('>>>>>>。'、moment(value).format('MM-DD-YYYY')、moment(value).format('YYYY-MM-DD'));

このエラーがどこで発生したのかわかりません。追跡できません。 警告メッセージを追加しました。

環境:
Ubuntu、クロームブラウザ。

問題を解決する

非推奨の警告:提供された値は、認識されたISO形式ではありません。 モーメントの構築はjsDate()にフォールバックしますが、これはすべてのブラウザーとバージョンで信頼できるわけではありません。 ISO以外の日付形式は推奨されておらず、今後のメジャーリリースで削除される予定です。 詳細については、 http://momentjs.com/guides/#/warnings/js-date/を参照してください。
引数:
[0] _isAMomentObject:true、_isUTC:false、_useUTC:false、_l:undefined、_i:27/04/2016、_f:undefined、_strict:undefined、_locale:[オブジェクトオブジェクト]
エラー

最も参考になるコメント

moment(new Date("27/04/2016")).format....を実行するとうまくいくようです。 しかし、私はそれらがこのアプローチのいくつかの問題であり、おそらくロケールなどに関連していると思います。

全てのコメント18件

この警告メッセージは、サポートされているISO 8601形式ではない文字列からモーメントを作成した場合に発生します(サポートされている形式のリストについては、http://momentjs.com/docs/#/parsing/string/を参照してください)。

この場合、ISO形式ではない文字列27/04/2016を解析しようとしたようです。 Momentに形式を指定すると、警告なしでこの形式を解析できます: moment("27/04/2016", "DD/MM/2016") 。 または、ISO仕様に一致するように入力の形式を変更することもできます: moment("2016-04-27")

Momentのバグではないため、この問題をクローズしますが、それでも質問がある場合は、ここに返信してください。サポートさせていただきます。

サポートされているISO8601形式を実行すると、成功しません

moment(new Date("27/04/2016")).format....を実行するとうまくいくようです。 しかし、私はそれらがこのアプローチのいくつかの問題であり、おそらくロケールなどに関連していると思います。

@ziaulrehmandevsinc私のために働いた。 ありがとう。

@ziaulrehmandevsincまた私のために働いた、ありがとう

@ziaulrehmandevsincそれは私のためにも働いた。 どうもありがとう

私のために働いた。 ありがとう

現時点では、この問題を処理するためにコードを調整したくないと思います。 警告が表示されるmoment.js内:

関数warn(msg){
if(hooks.suppressDeprecationWarnings === false &&
(typeof console!=='undefined')&& console.warn){
console.warn('非推奨の警告:' + msg);
}

「hooks.suppressDeprecationWarnings」をどのように設定しますか? フック関数を確認しましたが、フックが関数ではないと報告されています。 aureliaを使用します。

ありがとう

@pdesimone

// Suppress the warnings
const moment = require('moment');
moment.suppressDeprecationWarnings = true;

// See what else you can mess with
console.log(Object.keys(require('moment')));

ええ、私はmoment('2018-01-20')を使用してこの問題を抱えています。これは、私が知る限り、有効なISO8601形式です。

当時、supressDepreciationWarningsやその他のソリューションを機能させることができませんでした。

私は瞬間のすべての使用でこれを行いました:

モーメント(値、形式)、つまり:値:2018-01-20、形式:YYYY-MM-DD。

その後、警告は発生しません。 どうやら、瞬間を「試して」、日付の種類を理解すると、警告が表示されます...

@ ziaulrehman40は私のために働いた、どうもありがとう

正しく処理していると思われ、それでもエラーが表示される場合は、入力タイプを再確認してください<input type="date" />はエラーをスローしますが、 <input type="text" />機能します。

@pdesimone

// Suppress the warnings
const moment = require('moment');
moment.suppressDeprecationWarnings = true;

// See what else you can mess with
console.log(Object.keys(require('moment')));

ありがとう:正常に動作していますが、suppressdeprecationwarningsを追加するときに問題が発生するかどうかを知る必要があります

ありがとう、 @ ziaulrehman40- :kissing_heart:

警告を抑制する代わりに、momentを使用してフォーマットする前に、日付オブジェクトをISO文字列に変換します

 const moment = require('moment');

const dateFormatString = "YYYY-MM-DD";

function formatDate(dateObject) {
    var formatted = moment(dateObject.**toISOString()**).format(dateFormatString);
    return formatted;
}
var d = new Date();
var fd = formatDate(d);

console.log(fd);

Repl.itでテストしてください

私もこれに問題があります。

console.log(moment(this.entities[i].created_at).isValid());
this.entities[i].created_at = moment(this.entities[i].created_at).format("DD-MM-YYYY HH:mm");

コンソールログはtrueを返しますが、エラーメッセージが表示されます。

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.
Arguments: 
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 21-05-2020 19:43, _f: undefined, _strict: undefined, _locale: [object Object]

私が受け取った日のconsole.logは2020-05-21 19:43:58.099745+00を返します。
助言がありますか?

@kiocostaご不便をおかけして申し訳ございません。 おそらくフォーマットで解析する必要があります。 https://momentjs.com/docs/#/parsing/string-format/スタックオーバーフローにも良い質問かもしれません。

このページは役に立ちましたか?
0 / 5 - 0 評価