RFC2822 date in moment.js를 변환하려고 할 때 "감각 경고: moment construction back to js Date"
저는 moment.js를 사용하여 서버측 날짜-시간을 현지 시간으로 변환하기 위해 다음 코드를 사용하고 있습니다.
moment(moment('Wed, 23 Apr 2014 09:54:51 +0000').format('lll')).fromNow()
하지만 저는 다음을 얻고 있습니다.
감가상각 경고: 모멘트 건설이 js Date로 돌아갑니다.이는 권장되지 않으며 향후 주요 릴리스에서 삭제될 예정입니다.자세한 내용은 https://github.com/moment/moment/issues/1407 을 참조하시기 바랍니다.
나는 그것을 없앨 수 없는 것 같습니다!어떻게 고치죠?
경고를 제거하려면 다음 중 하나를 수행해야 합니다.
ISO 형식의 날짜 문자열 버전을 전달합니다.
moment('2014-04-23T09:54:51');
지금 가지고 있는 문자열을 전달하되 Moment에게 문자열의 형식을 알려줍니다.
moment('Wed, 23 Apr 2014 09:54:51 +0000', 'ddd, DD MMM YYYY HH:mm:ss ZZ');
문자열을 JavaScript Date 개체로 변환한 다음 Moment에 전달합니다.
moment(new Date('Wed, 23 Apr 2014 09:54:51 +0000'));
마지막 옵션은 Moment가 현재 지원하는 내장 폴백으로 콘솔이 더 이상 사용되지 않도록 경고합니다.그들은 향후 출시에서는 이번 폴백을 지원하지 않을 것이라고 말합니다.그들은 사용하는 것이new Date('my date')
너무 예측이 불가능합니다.
또는 다음과 같이 설정하여 감가상각 경고를 표시하는 것을 억제할 수 있습니다.moment.suppressDeprecationWarnings = true;
날짜 공사 인moment
내부적으로 사용합니다.new Date()
자바스크립트에서. 더.new Date()
construction은 모든 브라우저에서 날짜 문자열을 RFC2822 또는 ISO 형식으로 인식합니다.A를 구성할 때moment
날짜가 이 형식이 아닌 개체입니다. 감가상각 경고가 표시됩니다.
감가상각 경고가 표시되지만 일부 형식의 경우moment
개체는 Chrome에서는 성공적으로 구축되지만 Firefox나 Safari에서는 구축되지 않습니다.이로 인해 Chrome에서 날짜를 처리할 경우 예상대로(항상 그렇지는 않음) 결과가 발생하여 폐기될 수 있습니다.Invalid Date
다른 곳에서는
고려하다,02.02.2018
,
크롬 -moment("02.02.2018")._d
->Fri Feb 02 2018 00:00:00 GMT+0530 (India Standard Time)
파이어폭스 -moment("02.02.2018")._d
->Invalid Date
사파리 -moment("02.02.2018")._d
->Invalid Date
그래서.moment.js
권장/표준 형식을 사용하지 않을 경우 사용자의 위험에 따라 사용됩니다.
감가상각 경고를 억제하기 위해,
- 이전 답변에서 @Joe Wilson이 제안한 것처럼 날짜 형식을 지정합니다.
moment
건축물
예:moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");
- 날짜를 ISO 또는 RFC2822 형식으로 지정합니다.
예:moment("2018-02-01T18:30:00.000Z")
- ISO 형식
moment("Thu, 01 Feb 2018 18:30:00 GMT")
- RFC2822 포맷 - Github에서의 포맷
- 이전 답변에서 @niutech에서 제안한 것처럼, set
moment.suppressDeprecationWarnings = true;
저는 입력된 폴백을 순간적으로 덮어쓸 것을 제안합니다.
moment.createFromInputFallback=function (config){ config._d = new Date(config._i); }
(3)이 모든 경고를 억제하기 때문에 (4)는 날짜 시공 폴백만 억제합니다.(4)를 사용하면 다음을 얻을 수 있습니다.Invalid Date
s로서new Date()
가 사용되고 콘솔에서 다른 사용 중지 항목을 볼 수 있으므로, 애플리케이션에서 모멘트를 업그레이드하거나 사용 중지된 메서드를 교체할 수 있습니다.
string
(내 이슈처럼) 필터를 사용하여 문자열을 잠시 날짜로 변환할 수 있습니다.이것은 건설 경고의 순간을 처리할 것입니다.
$scope.apiDate = 10/29/2017 18:28:03";
angular.module('myApp').filter('stringToDate', function() {
return function(value) {
return Date.parse(value);
};
});
보기에 추가:
{{apiDate | stringToDate | amDateFormat:'ddd, MMM DD'}}
제 경우에는 양식 데이터에 포함할 날짜 시간을 생성하려고 했습니다.하지만 내가 접속한 문자열의 형식은 "10-9월-2020 10:10"처럼 보였기 때문에 순간을 사용하려고 할 때는 다음과 같습니다.
myDate = '10-Sep-2020 10:10';
moment(myDate).format('YYYY-MM-DD HH:mm:ss');
감가상각 경고를 받았습니다.문자열을 사용하여 날짜를 작성하는 것은 문제가 없지만 전달하는 내용을 순간적으로 알려주시면 됩니다.에 명시적으로 명시된 것과 같이, 예를 들어 수신하려는 형식
moment(myDate, 'DD-MMM-YYYY HH:mm').format('YYYY-MM-DD HH:mm:ss');
:2020-09-10 10:10:00
경고는 사라지고, 순간은 행복하며, 지속을 위한 날짜 시간 형식이 준비되어 있습니다.
위의 답변에 나와 있는 바와 같이.날짜 형식을 제공하는 것이 효과가 있을 것입니다.
제가 왜 다음 줄의 코드로 감가 상각 메시지를 받습니까?String + 형식이 이 문제를 해결할 수 있다고 생각했습니다.moment.tz('2015:08:20 14:33:20', 'YYYY:MM:DD HH:mm:ss', 'America/New_York')
또한 제공되는 날짜 형식에 대한 통제권이 없습니다.다로 수 것을 있습니다.'YYYY-MM-DDTHH:mm:ss'
다.그러나 문서에 따르면 코드 라인은 작동해야 합니다.여기 제가 보고 있는 감가상각 메시지가 있습니다.
"감가상각 경고: 제공된 값이 공인된 RFC2822 또는 ISO 형식이 아닙니다. 모멘트 구성은 js Date()로 되돌아갑니다. 이는 모든 브라우저 및 버전에서 신뢰할 수 없습니다.RFC2822/ISO 날짜가 아닌 형식은 권장되지 않으며 다가오는 주요 릴리스에서 제거됩니다.자세한 내용은 http://momentjs.com/guides/ #/ warnings/js-date/ 를 참조하시기 바랍니다."
Moment의 사용 범위가 너무 넓어서 시간이 지남에 따라 현재 버전을 평가절하하는 것이 불가능합니다.대체 옵션 Migration of moment.js에 대한 이 게시물을 확인하십시오.
언급URL : https://stackoverflow.com/questions/23263380/deprecation-warning-moment-construction-falls-back-to-js-date-when-trying-to
'source' 카테고리의 다른 글
어느쪽이 열리는지워드프레스의 ID와 OAuth 플러그인을 추천하십니까? (0) | 2023.09.23 |
---|---|
입력 유형 번호 "숫자 값만" 유효성 검사 (0) | 2023.09.23 |
플러그인 내부에서 is_page()를 사용하려면 어떻게 해야 합니까? (0) | 2023.09.23 |
group_concat을 사용하여 값을 인용하는 방법 (0) | 2023.09.23 |
선택한 드롭다운 목록에서 메타박스 데이터 저장 (0) | 2023.09.23 |