]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Support string value in add and subtract 1704/head
authorBenjamin Boudreau <benjamin.boudreau@360pi.com>
Sun, 8 Jun 2014 21:54:03 +0000 (17:54 -0400)
committerBenjamin Boudreau <benjamin.boudreau@360pi.com>
Sun, 8 Jun 2014 22:48:28 +0000 (18:48 -0400)
moment.js
test/moment/add_subtract.js

index 07448344c8956853eee889e7fc3a6e7d9cfaa0e6..74da362cb36dc3551fe09dd819e9210df87cf600 100644 (file)
--- a/moment.js
+++ b/moment.js
         add : function (input, val) {
             var dur;
             // switch args to support add('s', 1) and add(1, 's')
-            if (typeof input === 'string') {
+            if (typeof input === 'string' && typeof val === 'string') {
+                dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
+            } else if (typeof input === 'string') {
                 dur = moment.duration(+val, input);
             } else {
                 dur = moment.duration(input, val);
         subtract : function (input, val) {
             var dur;
             // switch args to support subtract('s', 1) and subtract(1, 's')
-            if (typeof input === 'string') {
+            if (typeof input === 'string' && typeof val === 'string') {
+                dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
+            } else if (typeof input === 'string') {
                 dur = moment.duration(+val, input);
             } else {
                 dur = moment.duration(input, val);
index c9ab587218a068a455bbd38032dd037e58c06ed5..2bc32a15bbd8cdc62a06395be7e012ec0b616208 100644 (file)
@@ -242,6 +242,102 @@ exports.add = {
         test.done();
     },
 
+    "add strings string short args" : function (test) {
+        test.expect(9);
+
+        var a = moment();
+        a.year(2011);
+        a.month(9);
+        a.date(12);
+        a.hours(6);
+        a.minutes(7);
+        a.seconds(8);
+        a.milliseconds(500);
+
+        test.equal(a.add('ms', '50').milliseconds(), 550, 'Add milliseconds');
+        test.equal(a.add('s', '1').seconds(), 9, 'Add seconds');
+        test.equal(a.add('m', '1').minutes(), 8, 'Add minutes');
+        test.equal(a.add('h', '1').hours(), 7, 'Add hours');
+        test.equal(a.add('d', '1').date(), 13, 'Add date');
+        test.equal(a.add('w', '1').date(), 20, 'Add week');
+        test.equal(a.add('M', '1').month(), 10, 'Add month');
+        test.equal(a.add('y', '1').year(), 2012, 'Add year');
+        test.equal(a.add('Q', '1').month(), 1, 'Add quarter');
+        test.done();
+    },
+
+    "subtract strings string short args" : function (test) {
+        test.expect(9);
+
+        var a = moment();
+        a.year(2011);
+        a.month(9);
+        a.date(12);
+        a.hours(6);
+        a.minutes(7);
+        a.seconds(8);
+        a.milliseconds(500);
+
+        test.equal(a.subtract('ms', '50').milliseconds(), 450, 'Subtract milliseconds');
+        test.equal(a.subtract('s', '1').seconds(), 7, 'Subtract seconds');
+        test.equal(a.subtract('m', '1').minutes(), 6, 'Subtract minutes');
+        test.equal(a.subtract('h', '1').hours(), 5, 'Subtract hours');
+        test.equal(a.subtract('d', '1').date(), 11, 'Subtract date');
+        test.equal(a.subtract('w', '1').date(), 4, 'Subtract week');
+        test.equal(a.subtract('M', '1').month(), 8, 'Subtract month');
+        test.equal(a.subtract('y', '1').year(), 2010, 'Subtract year');
+        test.equal(a.subtract('Q', '1').month(), 5, 'Subtract quarter');
+        test.done();
+    },
+
+    "add strings string short reverse args" : function (test) {
+        test.expect(9);
+
+        var a = moment();
+        a.year(2011);
+        a.month(9);
+        a.date(12);
+        a.hours(6);
+        a.minutes(7);
+        a.seconds(8);
+        a.milliseconds(500);
+
+        test.equal(a.add('50', 'ms').milliseconds(), 550, 'Add milliseconds');
+        test.equal(a.add('1', 's').seconds(), 9, 'Add seconds');
+        test.equal(a.add('1', 'm').minutes(), 8, 'Add minutes');
+        test.equal(a.add('1', 'h').hours(), 7, 'Add hours');
+        test.equal(a.add('1', 'd').date(), 13, 'Add date');
+        test.equal(a.add('1', 'w').date(), 20, 'Add week');
+        test.equal(a.add('1', 'M').month(), 10, 'Add month');
+        test.equal(a.add('1', 'y').year(), 2012, 'Add year');
+        test.equal(a.add('1', 'Q').month(), 1, 'Add quarter');
+        test.done();
+    },
+
+    "subtract strings string short reverse args" : function (test) {
+        test.expect(9);
+
+        var a = moment();
+        a.year(2011);
+        a.month(9);
+        a.date(12);
+        a.hours(6);
+        a.minutes(7);
+        a.seconds(8);
+        a.milliseconds(500);
+
+        test.equal(a.subtract('50', 'ms').milliseconds(), 450, 'Subtract milliseconds');
+        test.equal(a.subtract('1', 's').seconds(), 7, 'Subtract seconds');
+        test.equal(a.subtract('1', 'm').minutes(), 6, 'Subtract minutes');
+        test.equal(a.subtract('1', 'h').hours(), 5, 'Subtract hours');
+        test.equal(a.subtract('1', 'd').date(), 11, 'Subtract date');
+        test.equal(a.subtract('1', 'w').date(), 4, 'Subtract week');
+        test.equal(a.subtract('1', 'M').month(), 8, 'Subtract month');
+        test.equal(a.subtract('1', 'y').year(), 2010, 'Subtract year');
+        test.equal(a.subtract('1', 'Q').month(), 5, 'Subtract quarter');
+        test.done();
+    },
+
     "add across DST" : function (test) {
         // Detect Safari bug and bail. Hours on 13th March 2011 are shifted
         // with 1 ahead.