1import { addFormatToken } from '../format/format';
2import { addUnitAlias } from './aliases';
3import { addUnitPriority } from './priorities';
4import { addRegexToken, match3, match1to3 } from '../parse/regex';
5import { addParseToken } from '../parse/token';
6import toInt from '../utils/to-int';
7
8// FORMATTING
9
10addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
11
12// ALIASES
13
14addUnitAlias('dayOfYear', 'DDD');
15
16// PRIORITY
17addUnitPriority('dayOfYear', 4);
18
19// PARSING
20
21addRegexToken('DDD', match1to3);
22addRegexToken('DDDD', match3);
23addParseToken(['DDD', 'DDDD'], function (input, array, config) {
24 config._dayOfYear = toInt(input);
25});
26
27// HELPERS
28
29// MOMENTS
30
31export function getSetDayOfYear(input) {
32 var dayOfYear =
33 Math.round(
34 (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
35 ) + 1;
36 return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
37}