]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
fix bug where diff returns -0 in month-related diffs
authormaggie@tempworks.com <maggie@tempworks.com>
Tue, 22 Mar 2016 04:07:15 +0000 (23:07 -0500)
committerIskren Chernev <iskren.chernev@gmail.com>
Sat, 16 Apr 2016 06:51:51 +0000 (23:51 -0700)
src/lib/moment/diff.js
src/test/moment/diff.js

index 695fe20124c1c41097754296b2121ce095bc68c2..9f4390818980b1d4fb00d67905fc02fe1f6df809 100644 (file)
@@ -57,5 +57,6 @@ function monthDiff (a, b) {
         adjust = (b - anchor) / (anchor2 - anchor);
     }
 
-    return -(wholeMonthDiff + adjust);
+    //check for negative zero, return zero if negative zero
+    return -(wholeMonthDiff + adjust) || 0;
 }
index 6eb785b7bd0c4a019950bf88dd17dc6c0708e621..1499cae60fb5e6e017430ed09fe8f5a59c46c2bf 100644 (file)
@@ -232,3 +232,12 @@ test('year diffs', function (assert) {
     equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years');
     equal(assert, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years');
 });
+
+test('negative zero', function (assert) {
+    function isNegative (n) {
+            return (1 / n) < 0;
+        }
+    assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'months')), 'month diff on same date is zero, not -0');
+    assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'years')), 'year diff on same date is zero, not -0');
+    assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'quarters')), 'quarter diff on same date is zero, not -0');
+});