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()구조는 하나의 날짜 문자열 인식 RFC2822 또는 ISO 모든 브라우저에서 형식을. 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)
Firefox– 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이 제안한대로 설정하십시오.
moment.suppressDeprecationWarnings = true;
-
입력 폴백을 즉시 덮어 쓰는 것이 좋습니다.
moment.createFromInputFallback=function (config){ config._d = new Date(config._i); }
(3)은 모든 경고를 억제하므로 (4)는 날짜 구성 폴 백만 억제합니다. (4)를 사용 Invalid Date하면 내부 new Date()를 사용하고 콘솔에서 다른 지원 중단을 볼 수 있으므로 순간을 업그레이드하거나 더 이상 사용되지 않는 방법을 응용 프로그램에서 바꿀 수 있습니다.
답변
string내 문제처럼 API에서 날짜가 전달 되면 필터를 사용하여 문자열을 잠시 날짜로 변환 할 수 있습니다. 이것은 순간 건설 경고를 처리합니다.
$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'}}
답변
위의 답변에 표시된대로. 날짜 형식을 제공하면 작동합니다.
다음 코드 줄과 함께 사용 중단 메시지가 표시되는 이유는 무엇입니까? 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/ 를 참조하십시오
. “
답변
