From: Tim Wood Date: Mon, 10 Jun 2013 16:56:13 +0000 (-0300) Subject: using days in month instead of hardcoded year lengths #747 X-Git-Tag: 2.1.0~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ef8e76bf58d5fca6faa4f686b5983b88674ba71;p=thirdparty%2Fmoment.git using days in month instead of hardcoded year lengths #747 --- diff --git a/test/moment/diff.js b/test/moment/diff.js index 4a81356a5..2e4cbb472 100644 --- a/test/moment/diff.js +++ b/test/moment/diff.js @@ -127,37 +127,39 @@ exports.diff = { }, "diff across DST" : function(test) { - var dst = findDSTNear(moment([2012, 0, 1])), a, b; + var dst = findDSTNear(moment([2012, 0, 1])), a, b, daysInMonth; if (!dst) { console.log("No DST?"); test.done(); return; } - test.expect(12); + test.expect(16); a = dst.moment; b = a.clone().utc().add(12, 'hours').local(); - equal(test, b.diff(a, 'ms', true), 12 * 60 * 60 * 1000, "ms diff across DST"); - equal(test, b.diff(a, 's', true), 12 * 60 * 60, "second diff across DST"); - equal(test, b.diff(a, 'm', true), 12 * 60, "minute diff across DST"); - equal(test, b.diff(a, 'h', true), 12, "hour diff across DST"); - equal(test, b.diff(a, 'd', true), (12 - dst.diff) / 24, "day diff across DST"); - equal(test, b.diff(a, 'w', true), (12 - dst.diff) / 24 / 7, "week diff across DST"); - // equal(test, b.diff(a, 'M', true), (12 - dst.diff) / 24 / 30, "month diff across DST"); - // equal(test, b.diff(a, 'y', true), (12 - dst.diff) / 24 / 372, "year diff across DST"); + daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; + equal(test, b.diff(a, 'ms', true), 12 * 60 * 60 * 1000, "ms diff across DST"); + equal(test, b.diff(a, 's', true), 12 * 60 * 60, "second diff across DST"); + equal(test, b.diff(a, 'm', true), 12 * 60, "minute diff across DST"); + equal(test, b.diff(a, 'h', true), 12, "hour diff across DST"); + equal(test, b.diff(a, 'd', true), (12 - dst.diff) / 24, "day diff across DST"); + equal(test, b.diff(a, 'w', true), (12 - dst.diff) / 24 / 7, "week diff across DST"); + equal(test, b.diff(a, 'M', true), (12 - dst.diff) / 24 / daysInMonth, "month diff across DST"); + equal(test, b.diff(a, 'y', true), (12 - dst.diff) / 24 / daysInMonth / 12, "year diff across DST"); a = dst.moment; b = a.clone().utc().add(12 + dst.diff, 'hours').local(); - equal(test, b.diff(a, 'ms', true), (12 + dst.diff) * 60 * 60 * 1000, "ms diff across DST"); - equal(test, b.diff(a, 's', true), (12 + dst.diff) * 60 * 60, "second diff across DST"); - equal(test, b.diff(a, 'm', true), (12 + dst.diff) * 60, "minute diff across DST"); - equal(test, b.diff(a, 'h', true), (12 + dst.diff), "hour diff across DST"); - equal(test, b.diff(a, 'd', true), 12 / 24, "day diff across DST"); - equal(test, b.diff(a, 'w', true), 12 / 24 / 7, "week diff across DST"); - // equal(test, b.diff(a, 'M', true), (12 - dst.diff) / 24 / 30, "month diff across DST"); - // equal(test, b.diff(a, 'y', true), 12 / 24 / 372, "year diff across DST"); + daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; + equal(test, b.diff(a, 'ms', true), (12 + dst.diff) * 60 * 60 * 1000, "ms diff across DST"); + equal(test, b.diff(a, 's', true), (12 + dst.diff) * 60 * 60, "second diff across DST"); + equal(test, b.diff(a, 'm', true), (12 + dst.diff) * 60, "minute diff across DST"); + equal(test, b.diff(a, 'h', true), (12 + dst.diff), "hour diff across DST"); + equal(test, b.diff(a, 'd', true), 12 / 24, "day diff across DST"); + equal(test, b.diff(a, 'w', true), 12 / 24 / 7, "week diff across DST"); + equal(test, b.diff(a, 'M', true), 12 / 24 / daysInMonth, "month diff across DST"); + equal(test, b.diff(a, 'y', true), 12 / 24 / daysInMonth / 12, "year diff across DST"); test.done(); },