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/ 를 참조하십시오
. “
답변
