From 6431328eb7ca4e86c3b5654988ddcd4a219b5c4d Mon Sep 17 00:00:00 2001 From: Gregor Rayman Date: Tue, 7 Jan 2014 01:15:54 +0100 Subject: [PATCH] Fix to Arabic week number parsing (Week starts on Saturday, 1st week is the week of January 1st --- moment.js | 2 +- test/lang/ar.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/moment.js b/moment.js index 5292c5ad4..29e3d91ee 100644 --- a/moment.js +++ b/moment.js @@ -1500,7 +1500,7 @@ var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0); + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; return { diff --git a/test/lang/ar.js b/test/lang/ar.js index df01400bd..098b802e2 100644 --- a/test/lang/ar.js +++ b/test/lang/ar.js @@ -286,7 +286,7 @@ exports["lang:ar"] = { }, "weeks year starting wednesday" : function (test) { - test.expect(6); + test.expect(10); test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); @@ -295,6 +295,11 @@ exports["lang:ar"] = { test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); + test.equal(moment("2003 1 6", "gggg w d").format("YYYY-MM-DD"), "2002-12-28", "Week 1 of 2003 should be Dec 28 2002"); + test.equal(moment("2003 1 0", "gggg w e").format("YYYY-MM-DD"), "2002-12-28", "Week 1 of 2003 should be Dec 28 2002"); + test.equal(moment("2003 1 6", "gggg w d").format("gggg w d"), "2003 1 6", "Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6"); + test.equal(moment("2003 1 0", "gggg w e").format("gggg w e"), "2003 1 0", "1st day of week 1 of 2003 parsed should be formatted as 2003 1 0"); + test.done(); }, -- 2.47.2