[javascript] Moment.js의 지원 중단 경고-인식 된 ISO 형식이 아님

현재 제공된 값이 인식 된 ISO 형식이 아니라는 경고가 표시됩니다. 오늘 모멘트 기능으로 변수를 변경했지만 여전히 작동하지 않습니다.

경고 오류는 다음과 같습니다.

지원 중단 경고 : 제공된 값이 인식 된 ISO 형식이 아닙니다. 모멘트 구성은 js Date ()로 돌아가며 모든 브라우저와 버전에서 신뢰할 수있는 것은 아닙니다. ISO가 아닌 날짜 형식은 사용하지 않는 것이 좋으며 향후 주요 릴리스에서 제거 될 예정입니다. 자세한 내용은 http://momentjs.com/guides/#/warnings/js-date/ 를 참조하십시오 . 인수 : [0] _isAMomentObject : true, _isUTC : true, _useUTC : true, _l : 정의되지 않음, _i : 2016-9-26 19:30, _f : 정의되지 않음, _strict : 정의되지 않음, _locale : [object 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);
});



답변

멋진 문서를 모두 확인하십시오!

여기에서 경고 메시지에 대해 설명합니다 .

문자열 + 형식

경고 : 문자열 구문 분석에 대한 브라우저 지원이 일치하지 않습니다. 어떤 형식을 지원해야하는지에 대한 사양이 없으므로 일부 브라우저에서 작동하는 것은 다른 브라우저에서 작동하지 않습니다.

ISO 8601 문자열 이외의 것을 구문 분석하는 일관된 결과를 얻으려면 String + Format 을 사용해야합니다 .

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

문자열 + 형식 (여러 형식)

둘 이상의 형식이있는 경우 문자열 + 형식 ( ‘s’)을 확인하십시오.

입력 문자열의 정확한 형식을 모르지만 여러 형식 중 하나 일 수있는 형식 인 경우 형식 배열을 사용할 수 있습니다.

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

보다 구체적인 내용은 설명서를 확인하십시오.

시간대

시간대 에 해당하는 문서 인 Zone의 Checkout Parsing .

moment.tz 생성자는 moment 생성자와 동일한 인수를 모두 사용하지만 마지막 인수를 표준 시간대 식별자로 사용합니다.

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("27/04/2016")).format


답변

에서 날짜를 전달하려고했기 때문에이 오류가 발생했습니다 localStorage. 날짜를 새 Date객체에 전달한 다음 .toISOString () 을 호출 하면 나에게 속임수가되었습니다.

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

콘솔의 경고가 표시되지 않았습니다.


답변

이처럼 기능에서 순간을 사용하십시오

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


답변

이 답변은이 경고를 더 잘 이해하는 것입니다

사용 중단 경고는 순간을 사용하여 시간 개체를 만들 때 발생합니다. var today = moment(); .

이 경고가 괜찮다면 더 간단한 방법이 있습니다.

대신 date객체를 js사용 하지 마십시오 moment. 예를 들어moment() 현재 날짜를 얻는 데 합니다.

또는 js날짜 개체를 moment날짜 로 변환하십시오 . 당신은 단순히 당신의 형식을 지정하여 그렇게 할 수 있습니다js날짜 객체 .

즉, moment("js date", "js date format");

예 :

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

(단,이 방법은 더 이상 사용되지 않을 때까지만 사용할 수 있습니다 moment. 추후에 감가 상각 될 수 있습니다 )


답변

당신이 사용할 수있는

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

날짜가 ISO 형식이 아닌 경우 현재 형식이 무엇인지 순간적으로 알려주므로 사용해야합니다.


답변

moment.js로 문자열을 구문 분석합니다.

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