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 Dates로서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 |