問題の説明と再現手順:
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:[オブジェクトオブジェクト]
エラー
この警告メッセージは、サポートされている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);
私もこれに問題があります。
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/スタックオーバーフローにも良い質問かもしれません。
最も参考になるコメント
moment(new Date("27/04/2016")).format....
を実行するとうまくいくようです。 しかし、私はそれらがこのアプローチのいくつかの問題であり、おそらくロケールなどに関連していると思います。