| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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('Y', 0, 0, function () {
- var y = this.year();
- return y <= 9999 ? '' + y : '+' + y;
- });
- 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(['YYYYY', 'YYYYYY'], YEAR);
- addParseToken('YYYY', function (input, array) {
- array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
- });
- addParseToken('YY', function (input, array) {
- array[YEAR] = hooks.parseTwoDigitYear(input);
- });
- addParseToken('Y', function (input, array) {
- array[YEAR] = parseInt(input, 10);
- });
- // 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', true);
- export function getIsLeapYear () {
- return isLeapYear(this.year());
- }
|