|
import { makeGetSet } from '../moment/get-set'; |
|
import { addFormatToken } from '../format/format'; |
|
import { addUnitAlias } from './aliases'; |
|
import { addUnitPriority } from './priorities'; |
|
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'; |
|
|
|
|
|
|
|
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'); |
|
|
|
|
|
|
|
addUnitAlias('year', 'y'); |
|
|
|
|
|
|
|
addUnitPriority('year', 1); |
|
|
|
|
|
|
|
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); |
|
}); |
|
|
|
|
|
|
|
export function daysInYear(year) { |
|
return isLeapYear(year) ? 366 : 365; |
|
} |
|
|
|
export function isLeapYear(year) { |
|
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; |
|
} |
|
|
|
|
|
|
|
hooks.parseTwoDigitYear = function (input) { |
|
return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); |
|
}; |
|
|
|
|
|
|
|
export var getSetYear = makeGetSet('FullYear', true); |
|
|
|
export function getIsLeapYear () { |
|
return isLeapYear(this.year()); |
|
} |
|
|