| import { daysToMonths, monthsToDays } from './bubble'; |
| import { normalizeUnits } from '../units/aliases'; |
| import toInt from '../utils/to-int'; |
|
|
| export function as (units) { |
| if (!this.isValid()) { |
| return NaN; |
| } |
| var days; |
| var months; |
| var milliseconds = this._milliseconds; |
|
|
| units = normalizeUnits(units); |
|
|
| if (units === 'month' || units === 'year') { |
| days = this._days + milliseconds / 864e5; |
| months = this._months + daysToMonths(days); |
| return units === 'month' ? months : months / 12; |
| } else { |
| |
| 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; |
| |
| case 'millisecond': return Math.floor(days * 864e5) + milliseconds; |
| default: throw new Error('Unknown unit ' + units); |
| } |
| } |
| } |
|
|
| |
| export function valueOf () { |
| if (!this.isValid()) { |
| return NaN; |
| } |
| return ( |
| this._milliseconds + |
| this._days * 864e5 + |
| (this._months % 12) * 2592e6 + |
| toInt(this._months / 12) * 31536e6 |
| ); |
| } |
|
|
| function makeAs (alias) { |
| return function () { |
| return this.as(alias); |
| }; |
| } |
|
|
| export var asMilliseconds = makeAs('ms'); |
| export var asSeconds = makeAs('s'); |
| export var asMinutes = makeAs('m'); |
| export var asHours = makeAs('h'); |
| export var asDays = makeAs('d'); |
| export var asWeeks = makeAs('w'); |
| export var asMonths = makeAs('M'); |
| export var asYears = makeAs('y'); |
|
|