From 808cb543fbf2f7949e2e73b282b732de0699f22d Mon Sep 17 00:00:00 2001 From: Iskren Chernev Date: Wed, 11 Dec 2013 00:59:05 -0800 Subject: [PATCH] Fix zerofill for negative numbers --- moment.js | 6 ++++-- test/moment/format.js | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/moment.js b/moment.js index 7dd6c9ab4..4ea001f4a 100644 --- a/moment.js +++ b/moment.js @@ -362,11 +362,13 @@ // left zero fill a number // see http://jsperf.com/left-zero-filling for performance comparison function leftZeroFill(number, targetLength) { - var output = number + ''; + var output = Math.abs(number) + '', + sign = number >= 0; + while (output.length < targetLength) { output = '0' + output; } - return output; + return (sign ? '' : '-') + output; } // helper function for _.addTime and _.subtractTime diff --git a/test/moment/format.js b/test/moment/format.js index 64cb84ac7..8041d61f0 100644 --- a/test/moment/format.js +++ b/test/moment/format.js @@ -28,6 +28,17 @@ exports.format = { test.done(); }, + "handle negative years" : function (test) { + test.expect(2); + + moment.lang('en'); + var m = moment('-000001-01-01T00:00:00.000Z'); + test.equal(m.format('YY'), '-02', 'YY with negative year'); + test.equal(m.format('YYYY'), '-0002', 'YYYY with negative year'); + + test.done(); + }, + "format milliseconds" : function (test) { test.expect(6); var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); -- 2.47.2