]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Adding setters for week of year
authorTim Wood <washwithcare@gmail.com>
Thu, 8 Nov 2012 23:09:47 +0000 (15:09 -0800)
committerTim Wood <washwithcare@gmail.com>
Thu, 8 Nov 2012 23:09:47 +0000 (15:09 -0800)
moment.js
test/moment/weeks.js

index 7a4ba74699eecc57f21551bc8bd8a32441352a62..847f695c7652b3dc61f45447e14b739bdf9db5ab 100644 (file)
--- a/moment.js
+++ b/moment.js
             return moment(this).startOf('day').diff(moment(this).startOf('year'), 'days') + 1;
         },
 
-        isoWeek : function () {
-            return weekOfYear(this, 1, 4);
+        isoWeek : function (input) {
+            var week = weekOfYear(this, 1, 4);
+            return input == null ? week : this.add("d", (input - week) * 7);
         },
 
-        week : function () {
-            return this.lang().week(this);
+        week : function (input) {
+            var week = this.lang().week(this);
+            return input == null ? week : this.add("d", (input - week) * 7);
         },
 
         // If passed a language key, it will set the language for this
index c2f286d9e4d41f18a0baf15737801d44787e013a..d7585b66fabbbaa6aa54b7f4e9f92317d01e141b 100644 (file)
@@ -148,6 +148,43 @@ exports.utc = {
         test.equal(moment([2012, 0, 9]).isoWeeks(),  2, "Jan  9 2012 should be iso week 2");
         test.equal(moment([2012, 0, 15]).isoWeeks(), 2, "Jan 15 2012 should be iso week 2");
 
+        test.done();
+    },
+
+    "weeks setter" : function(test) {
+        test.expect(5);
+
+        test.equal(moment([2012, 0,  1]).week(30).week(), 30, "Setting Jan 1 2012 to week 30 should work");
+        test.equal(moment([2012, 0,  7]).week(30).week(), 30, "Setting Jan 7 2012 to week 30 should work");
+        test.equal(moment([2012, 0,  8]).week(30).week(), 30, "Setting Jan 8 2012 to week 30 should work");
+        test.equal(moment([2012, 0, 14]).week(30).week(), 30, "Setting Jan 14 2012 to week 30 should work");
+        test.equal(moment([2012, 0, 15]).week(30).week(), 30, "Setting Jan 15 2012 to week 30 should work");
+
+        test.done();
+    },
+
+    "iso weeks setter" : function(test) {
+        test.expect(5);
+
+        test.equal(moment([2012, 0,  1]).isoWeeks(25).isoWeeks(), 25, "Setting Jan  1 2012 to week 25 should work");
+        test.equal(moment([2012, 0,  2]).isoWeeks(24).isoWeeks(), 24, "Setting Jan  2 2012 to week 24 should work");
+        test.equal(moment([2012, 0,  8]).isoWeeks(23).isoWeeks(), 23, "Setting Jan  8 2012 to week 23 should work");
+        test.equal(moment([2012, 0,  9]).isoWeeks(22).isoWeeks(), 22, "Setting Jan  9 2012 to week 22 should work");
+        test.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, "Setting Jan 15 2012 to week 21 should work");
+
+        test.done();
+    },
+
+    "iso weeks setter day of year" : function(test) {
+        test.expect(6);
+
+        test.equal(moment([2012, 0,  1]).isoWeek(1).dayOfYear(), 9, "Setting Jan  1 2012 to week 1 should be day of year 8");
+        test.equal(moment([2012, 0,  1]).isoWeek(1).year(),   2011, "Setting Jan  1 2012 to week 1 should be year 2011");
+        test.equal(moment([2012, 0,  2]).isoWeek(1).dayOfYear(), 2, "Setting Jan  2 2012 to week 1 should be day of year 2");
+        test.equal(moment([2012, 0,  8]).isoWeek(1).dayOfYear(), 8, "Setting Jan  8 2012 to week 1 should be day of year 8");
+        test.equal(moment([2012, 0,  9]).isoWeek(1).dayOfYear(), 2, "Setting Jan  9 2012 to week 1 should be day of year 2");
+        test.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, "Setting Jan 15 2012 to week 1 should be day of year 8");
+
         test.done();
     }
 };