[javascript] Moment.js-반올림하지 않은 날짜 이후의 년 수는 어떻게 얻습니까?

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 공식 문서를 읽을 수 있습니다 .


답변

http://jsfiddle.net/xR8t5/27/

분수 값을 원하지 않는 경우 :

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);

편집 : 첫 번째 버전은 완벽하게 작동하지 않았습니다. 업데이트 된 것