Moment.js를 사용하여 사람의 나이를 계산하려고 하지만 다른 유용한 fromNow 메소드가 수년을 반올림 한다는 것을 알았 습니다. 예를 들어 오늘이 2012 moment("02/26/1978", "MM/DD/YYYY").fromNow()
년 12 월 27 일이고 사람의 생년월일이 1978 년 2 월 26 일인 경우 ’35 년 전 ‘을 반환합니다. Moment.js가 개월 수를 무시하고 날짜 이후 연도 (예 : 34)를 반환하도록하려면 어떻게해야합니까?
답변
moment.js를 사용하는 것은 다음과 같이 쉽습니다.
var years = moment().diff('1981-01-01', 'years');
var days = moment().diff('1981-01-01', 'days');
추가 참조를 위해 moment.js 공식 문서를 읽을 수 있습니다 .
답변
분수 값을 원하지 않는 경우 :
var years = moment().diff('1981-01-01', 'years',false);
alert( years);
분수 값을 원하는 경우 :
var years = moment().diff('1981-01-01', 'years',true);
alert( years);
단위는 [초, 분, 시간, 일, 주, 월, 년] 일 수 있습니다.
답변
사용할 시간 간격 과 결과를 반올림 하지 않는 옵션을 허용 하는 차이 함수 가 있는 것 같습니다. 그래서, 같은
Math.floor(moment(new Date()).diff(moment("02/26/1978","MM/DD/YYYY"),'years',true)))
나는 이것을 시도하지 않았으며, 순간에 완전히 익숙하지는 않지만, 원하는 것을 얻을 것 같습니다 (월을 재설정하지 않고도).
답변
두 날짜 (제공 날짜 및 현재)에 대해 월을 1 월로 재설정하는 것이 효과가 있음을 발견했습니다.
> moment("02/26/1978", "MM/DD/YYYY").month(0).from(moment().month(0))
"34 years ago"
답변
이 방법은 쉽고 강력합니다.
값은 날짜이고 “DD-MM-YYYY”는 날짜의 마스크입니다.
moment().diff(moment(value, "DD-MM-YYYY"), 'years');
답변
이 시도:
moment("02/26/1978", "MM/DD/YYYY").fromNow().split(" ")[0];
설명:
’23 일 전 ‘과 같은 문자열을받습니다. 배열을 [ ’23’, ‘days’, ‘ago’]로 나누고 첫 번째 항목 ’23’을 가져옵니다.
답변
이 방법은 저에게 효과적입니다. 올해 생일을했는지 확인하고 그렇지 않으면 1 년을 뺍니다.
// date is the moment you're calculating the age of
var now = moment().unix();
var then = date.unix();
var diff = (now - then) / (60 * 60 * 24 * 365);
var years = Math.floor(diff);
편집 : 첫 번째 버전은 완벽하게 작동하지 않았습니다. 업데이트 된 것