import { makeGetSet } from ‘../moment/get-set’; import { addFormatToken } from ‘../format/format’; import { addUnitAlias } from ‘./aliases’; import { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from ‘../parse/regex’; import { addParseToken } from ‘../parse/token’; import { hooks } from ‘../utils/hooks’; import { YEAR } from ‘./constants’; import toInt from ‘../utils/to-int’;
// FORMATTING
addFormatToken(0, [‘YY’, 2], 0, function () {
return this.year() % 100;
});
addFormatToken(0, [‘YYYY’, 4], 0, ‘year’); addFormatToken(0, [‘YYYYY’, 5], 0, ‘year’); addFormatToken(0, [‘YYYYYY’, 6, true], 0, ‘year’);
// ALIASES
addUnitAlias(‘year’, ‘y’);
// PARSING
addRegexToken(‘Y’, matchSigned); addRegexToken(‘YY’, match1to2, match2); addRegexToken(‘YYYY’, match1to4, match4); addRegexToken(‘YYYYY’, match1to6, match6); addRegexToken(‘YYYYYY’, match1to6, match6);
addParseToken([‘YYYY’, ‘YYYYY’, ‘YYYYYY’], YEAR); addParseToken(‘YY’, function (input, array) {
array[YEAR] = hooks.parseTwoDigitYear(input);
});
// HELPERS
export function daysInYear(year) {
return isLeapYear(year) ? 366 : 365;
}
function isLeapYear(year) {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}
// HOOKS
hooks.parseTwoDigitYear = function (input) {
return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
};
// MOMENTS
export var getSetYear = makeGetSet(‘FullYear’, false);
export function getIsLeapYear () {
return isLeapYear(this.year());
}