Я получаю предупреждение о том, что значение, указанное на момент, не соответствует распознанному формату ISO. Сегодня я изменил свою переменную с помощью функции момента, но она все равно не работает.

Вот предупреждение об ошибке:

Предупреждение об устаревании: указанное значение не в распознанном формате ISO. Создание момента возвращается к js Date (), что не является надежным для всех браузеров и версий. Не рекомендуется использовать форматы даты, отличные от ISO, и они будут удалены в следующем крупном выпуске. Пожалуйста, обратитесь к http://momentjs.com/guides/#/ warnings / js-date / для получения дополнительной информации. Аргументы: [0] _isAMomentObject: true, _isUTC: true, _useUTC: true, _l: undefined, _i: 2016-9-26 19:30, _f: undefined, _strict: undefined, _locale: [объект Object]

var entryDate = new Date();
var currentDate = entryDate.getDate();

function between(x, min, max) {
  return x.valueOf() >= min.valueOf() && x < max.valueOf();
}

$('#custom1').change(function () {
  if ($('#custom1 :selected').val() == 'AU') {
    var keyword = '';

    var aus1_s = moment.tz('2016-9-26 19:30', 'Australia/Sydney');
    var aus2_s = moment.tz('2016-10-2 19:30', 'Australia/Sydney');
    var aus3_s = moment.tz('2016-10-9 19:30', 'Australia/Sydney');
    var aus4_s = moment.tz('2016-10-16 19:30', 'Australia/Sydney');
    var aus5_s = moment.tz('2016-10-23 19:30', 'Australia/Sydney');
    var aus6_s = moment.tz('2016-10-30 19:30', 'Australia/Sydney');
    var aus6_e = moment.tz('2016-11-5 19:30', 'Australia/Sydney');
  } else if ($('#custom1 :selected').val() == 'NZ') {
    var aus1_s = moment.tz('2016-9-28 20:30', 'Pacific/Auckland');
    var aus2_s = moment.tz('2016-10-4 20:30', 'Pacific/Auckland');
    var aus3_s = moment.tz('2016-10-11 20:30', 'Pacific/Auckland');
    var aus4_s = moment.tz('2016-10-18 20:30', 'Pacific/Auckland');
    var aus5_s = moment.tz('2016-10-25 20:30', 'Pacific/Auckland');
    var aus6_s = moment.tz('2016-11-2 20:30', 'Pacific/Auckland');
    var aus6_e = moment.tz('2016-11-9 20:30', 'Pacific/Auckland');
  } else {
    $('#entryEquals').val('');
    return false;
  }

  var today = moment();

  switch (true) {
    case between(today, aus1_s, aus2_s):
      keyword = 'RElYT04=';
      break;

    case between(today, aus2_s, aus3_s):
      keyword = 'QlJJREU=';
      break;

    case between(today, aus3_s, aus4_s):
      keyword = 'U1lETkVZ';
      break;

    case between(today, aus4_s, aus5_s):
      keyword = 'R1JPT00=';
      break;

    case between(today, aus5_s, aus6_s):
      keyword = 'V0VERElORw==';
      break;

    case between(today, aus6_s, aus6_e):
      keyword = 'VExD';
      break;

    default:
      $('#entryEquals').val('');
      break;
  }

  $('#entryEquals').val(keyword);
});

Jemai

Ответов: 13

Ответы (13)

Ознакомьтесь со всей их потрясающей документацией!

Здесь обсуждают Предупреждающее сообщение.

String + Format

Предупреждение. Браузер поддерживает разбор строк непоследовательно. Поскольку не указано, какие форматы должны поддерживаться, то, что работает в некоторых браузерах, не будет работать в других браузерах.

Для получения согласованных результатов при синтаксическом анализе чего-либо, кроме строк ISO 8601, вы должны использовать String + Format.

moment("12-25-1995", "MM-DD-YYYY");

Строка + Форматы (несколько форматов)

Если у вас более одного формата, проверьте их String + Formats (с 's').

Если вы не знаете точный формат входной строки, но знаете, что это может быть один из многих, вы можете использовать массив форматов.

moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);

Более подробную информацию можно найти в документации.

Часовой пояс

Checkout Parsing in Zone, эквивалентная документация для часовых поясов.

Конструктор moment.tz принимает все те же аргументы, что и конструктор моментов, но использует последний аргумент в качестве идентификатора часового пояса.

var b = moment.tz("May 12th 2014 8PM", "MMM Do YYYY hA", "America/Toronto");

РЕДАКТИРОВАТЬ

//...
var dateFormat = "YYYY-M-D H:m"; //<-------- This part will get rid of the warning.
var aus1_s, aus2_s, aus3_s, aus4_s, aus5_s, aus6_s, aus6_e;
if ($("#custom1 :selected").val() == "AU" ) {
    var region = 'Australia/Sydney';

    aus1_s = moment.tz('2016-9-26 19:30', dateFormat, region);              
    aus2_s = moment.tz('2016-10-2 19:30', dateFormat, region);              
    aus3_s = moment.tz('2016-10-9 19:30', dateFormat, region);                  
    aus4_s = moment.tz('2016-10-16 19:30', dateFormat, region);                 
    aus5_s = moment.tz('2016-10-23 19:30', dateFormat, region);
    aus6_s = moment.tz('2016-10-30 19:30', dateFormat, region);
    aus6_e = moment.tz('2016-11-5 19:30', dateFormat, region);
} else if ($("#custom1 :selected").val() == "NZ" ) {
    var region = 'Pacific/Auckland';

    aus1_s =  moment.tz('2016-9-28 20:30', dateFormat, region);
    aus2_s =  moment.tz('2016-10-4 20:30', dateFormat, region);
    aus3_s =  moment.tz('2016-10-11 20:30', dateFormat, region);
    aus4_s =  moment.tz('2016-10-18 20:30', dateFormat, region);
    aus5_s =  moment.tz('2016-10-25 20:30', dateFormat, region);
    aus6_s =  moment.tz('2016-11-2 20:30', dateFormat, region);
    aus6_e =  moment.tz('2016-11-9 20:30', dateFormat, region);
}
//...

используйте момент в вашей функции, как это

 moment(new Date(date)).format('MM/DD/YYYY')

Вы можете использовать

moment(date,"currentFormat").format("requiredFormat");

Это следует использовать, когда дата не является форматом ISO, так как она покажет момент, какой у нас текущий формат.

Добавьте в свой код следующую строку, чтобы подавить предупреждения:

const moment = require ('moment');

moment.suppressDeprecationWarnings = true;

const dateFormat = 'MM-DD-YYYY';

const currentDateStringType = moment(new Date()).format(dateFormat);
    
const currentDate = moment(new Date() ,dateFormat);  // use this 

moment.suppressDeprecationWarnings = true;

Я столкнулся с подобной проблемой и решил ее следующим образом: мой формат даты: 'Fri Dec 11 2020 05:00:00 GMT + 0500 (пакистанское стандартное время)'

let currentDate = moment(new Date('Fri Dec 11 2020 05:00:00 GMT+0500 (Pakistan Standard Time)').format('DD-MM-YYYY'); // 'Fri Dec 11 2020 05:00:00 GMT+0500 (Pakistan Standard Time)'

let output=(moment(currentDate).isSameOrAfter('07-12-2020'));

У меня это работает:

moment(new Date("27/04/2016")).format

Простой ответ:

let date = Date.now();
let timeNow = moment(new Date(date)).format('YYYY-MM-DD');

Я столкнулся с этой ошибкой, потому что пытался передать дату из localStorage. Передача даты в новый объект Date, а затем вызов .toISOString () помогли мне:

const dateFromStorage = localStorage.getItem('someDate');
const date = new Date(dateFromStorage);
const momentDate = moment(date.toISOString());

Это подавляет любые предупреждения в консоли.

Я использовал момент, чтобы преобразовать значение даты в желаемый формат. Значение даты из базы данных имеет вид

2021-06-07T22: 00: 00.000Z

Я сделал следующее:

dateNeeded = moment(dateNeeded , moment.ISO_8601).format('YYYY-MM-DD');

Ссылка здесь: https://momentjs.com/docs/#/ parsing / string-format /

In my case, this error happens when

moment('2021-07-1')

Правильный способ

moment('2021-07-01')

Когда месяц / число меньше 10, вам нужно добавить 0 впереди.

Разбираем строку с помощью moment.js.

const date = '1231231231231' //Example String date
const parsed = moment(+date);

Этот ответ предназначен для лучшего понимания этого предупреждения

Предупреждение об устаревании возникает, когда вы используете момент для создания объекта времени, var today = moment ();.

If this warning is okay with you then I have a simpler method.

Не используйте date объект из js используйте вместо него moment. Например, используйте moment (), чтобы получить текущую дату.

Или преобразовать объект даты js в момент дату. Вы можете просто сделать это, указав формат вашего объекта даты js.

т.е. момент ("дата в формате js", "формат даты в формате js");

например:

moment("2014 04 25", "YYYY MM DD");

(НО ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ЭТОТ СПОСОБ ТОЛЬКО, ПОКА ЭТО НЕ УСТАРЕЛО, в будущем может начаться амортизация с момента)

2022 WebDevInsider