Blame view

node_modules/moment/src/lib/units/year.js 1.92 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  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';
  
  // 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');
  
  // PRIORITIES
  
  addUnitPriority('year', 1);
  
  // 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;
  }
  
  export 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());
  }