| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- import { normalizeUnits, normalizeObjectUnits } from '../units/aliases';
- import { getPrioritizedUnits } from '../units/priorities';
- import { hooks } from '../utils/hooks';
- import isFunction from '../utils/is-function';
- import { isLeapYear } from '../units/year';
- export function makeGetSet(unit, keepTime) {
- return function (value) {
- if (value != null) {
- set(this, unit, value);
- hooks.updateOffset(this, keepTime);
- return this;
- } else {
- return get(this, unit);
- }
- };
- }
- export function get(mom, unit) {
- if (!mom.isValid()) {
- return NaN;
- }
- var d = mom._d,
- isUTC = mom._isUTC;
- switch (unit) {
- case 'Milliseconds':
- return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
- case 'Seconds':
- return isUTC ? d.getUTCSeconds() : d.getSeconds();
- case 'Minutes':
- return isUTC ? d.getUTCMinutes() : d.getMinutes();
- case 'Hours':
- return isUTC ? d.getUTCHours() : d.getHours();
- case 'Date':
- return isUTC ? d.getUTCDate() : d.getDate();
- case 'Day':
- return isUTC ? d.getUTCDay() : d.getDay();
- case 'Month':
- return isUTC ? d.getUTCMonth() : d.getMonth();
- case 'FullYear':
- return isUTC ? d.getUTCFullYear() : d.getFullYear();
- default:
- return NaN; // Just in case
- }
- }
- export function set(mom, unit, value) {
- var d, isUTC, year, month, date;
- if (!mom.isValid() || isNaN(value)) {
- return;
- }
- d = mom._d;
- isUTC = mom._isUTC;
- switch (unit) {
- case 'Milliseconds':
- return void (isUTC
- ? d.setUTCMilliseconds(value)
- : d.setMilliseconds(value));
- case 'Seconds':
- return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
- case 'Minutes':
- return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
- case 'Hours':
- return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
- case 'Date':
- return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
- // case 'Day': // Not real
- // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
- // case 'Month': // Not used because we need to pass two variables
- // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
- case 'FullYear':
- break; // See below ...
- default:
- return; // Just in case
- }
- year = value;
- month = mom.month();
- date = mom.date();
- date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
- void (isUTC
- ? d.setUTCFullYear(year, month, date)
- : d.setFullYear(year, month, date));
- }
- // MOMENTS
- export function stringGet(units) {
- units = normalizeUnits(units);
- if (isFunction(this[units])) {
- return this[units]();
- }
- return this;
- }
- export function stringSet(units, value) {
- if (typeof units === 'object') {
- units = normalizeObjectUnits(units);
- var prioritized = getPrioritizedUnits(units),
- i,
- prioritizedLen = prioritized.length;
- for (i = 0; i < prioritizedLen; i++) {
- this[prioritized[i].unit](units[prioritized[i].unit]);
- }
- } else {
- units = normalizeUnits(units);
- if (isFunction(this[units])) {
- return this[units](value);
- }
- }
- return this;
- }
|