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
76
| import { daysToMonths, monthsToDays } from './bubble';
| import { normalizeUnits } from '../units/aliases';
|
| export function as(units) {
| if (!this.isValid()) {
| return NaN;
| }
| var days,
| months,
| milliseconds = this._milliseconds;
|
| units = normalizeUnits(units);
|
| if (units === 'month' || units === 'quarter' || units === 'year') {
| days = this._days + milliseconds / 864e5;
| months = this._months + daysToMonths(days);
| switch (units) {
| case 'month':
| return months;
| case 'quarter':
| return months / 3;
| case 'year':
| return months / 12;
| }
| } else {
| // handle milliseconds separately because of floating point math errors (issue #1867)
| days = this._days + Math.round(monthsToDays(this._months));
| switch (units) {
| case 'week':
| return days / 7 + milliseconds / 6048e5;
| case 'day':
| return days + milliseconds / 864e5;
| case 'hour':
| return days * 24 + milliseconds / 36e5;
| case 'minute':
| return days * 1440 + milliseconds / 6e4;
| case 'second':
| return days * 86400 + milliseconds / 1000;
| // Math.floor prevents floating point math errors here
| case 'millisecond':
| return Math.floor(days * 864e5) + milliseconds;
| default:
| throw new Error('Unknown unit ' + units);
| }
| }
| }
|
| function makeAs(alias) {
| return function () {
| return this.as(alias);
| };
| }
|
| var asMilliseconds = makeAs('ms'),
| asSeconds = makeAs('s'),
| asMinutes = makeAs('m'),
| asHours = makeAs('h'),
| asDays = makeAs('d'),
| asWeeks = makeAs('w'),
| asMonths = makeAs('M'),
| asQuarters = makeAs('Q'),
| asYears = makeAs('y'),
| valueOf = asMilliseconds;
|
| export {
| asMilliseconds,
| asSeconds,
| asMinutes,
| asHours,
| asDays,
| asWeeks,
| asMonths,
| asQuarters,
| asYears,
| valueOf,
| };
|
|