From 2de9c39f7ac5663fabcc38d19e0ef1f57f229b9c Mon Sep 17 00:00:00 2001 From: Iskren Chernev Date: Sat, 19 Sep 2015 18:41:10 -0700 Subject: [PATCH] get,set,add,subtract handle properly invalid moments --- src/lib/moment/add-subtract.js | 6 ++++++ src/lib/moment/get-set.js | 7 +++++-- src/lib/units/month.js | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/lib/moment/add-subtract.js b/src/lib/moment/add-subtract.js index ebfe674b2..988eff321 100644 --- a/src/lib/moment/add-subtract.js +++ b/src/lib/moment/add-subtract.js @@ -25,6 +25,12 @@ export function addSubtract (mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, days = duration._days, months = duration._months; + + if (!mom.isValid()) { + // No op + return; + } + updateOffset = updateOffset == null ? true : updateOffset; if (milliseconds) { diff --git a/src/lib/moment/get-set.js b/src/lib/moment/get-set.js index 0f2be6045..a8c6ef691 100644 --- a/src/lib/moment/get-set.js +++ b/src/lib/moment/get-set.js @@ -14,11 +14,14 @@ export function makeGetSet (unit, keepTime) { } export function get (mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; } export function set (mom, unit, value) { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } } // MOMENTS diff --git a/src/lib/units/month.js b/src/lib/units/month.js index 63d18b47f..39193e700 100644 --- a/src/lib/units/month.js +++ b/src/lib/units/month.js @@ -100,6 +100,11 @@ export function localeMonthsParse (monthName, format, strict) { export function setMonth (mom, value) { var dayOfMonth; + if (!mom.isValid()) { + // No op + return mom; + } + // TODO: Move this out of here! if (typeof value === 'string') { value = mom.localeData().monthsParse(value); -- 2.47.2