1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-16 10:29:54 +00:00

fix for 2634 problems with week calculation

This commit is contained in:
Mario Pietsch 2016-11-14 00:56:18 +01:00
parent 0c6b2311ae
commit b43b89f44a
2 changed files with 29 additions and 1 deletions

View File

@ -358,7 +358,8 @@ exports.getWeek = function(date) {
d = 7; // JavaScript Sun=0, ISO Sun=7
}
dt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo
var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1) + 3600000) / 86400000);
var x = new Date(dt.getFullYear(),0,1);
var n = Math.floor((dt.getTime() - x.getTime()) / 86400000);
return Math.floor(n / 7) + 1;
};

View File

@ -27,11 +27,38 @@ describe("Utility tests", function() {
it("should handle formatting a date string", function() {
var fds = $tw.utils.formatDateString,
// nov is month: 10!
d = new Date(2014,10,9,17,41,28,542);
expect(fds(d,"DDD DD MMM YYYY")).toBe("Sunday 9 November 2014");
expect(fds(d,"ddd hh mm ssss")).toBe("Sun 17 41 2828");
expect(fds(d,"MM0DD")).toBe("1109");
expect(fds(d,"MM0\\D\\D")).toBe("110DD");
// test some edge cases found at: https://en.wikipedia.org/wiki/ISO_week_date
// 2016-11-13 is Week 45 and it's a Sunday (month nr: 10)
d = new Date(2016,10,12,23,59,59);
expect(fds(d,"WW")).toBe("45");
d = new Date(2016,10,13,23,59,59,999);
expect(fds(d,"WW")).toBe("45");
d = new Date(2016,10,13,23,59,60); // see 60 seconds. so it's week 46
expect(fds(d,"WW")).toBe("46");
// 2006 Dez. 31 is end of week 52 (month nr: 11)
d = new Date(2006,11,31,23,59,59);
expect(fds(d,"WW")).toBe("52");
d = new Date(2006,11,31,23,59,60);
expect(fds(d,"WW")).toBe("1");
// 2010 Jan 03 is in week 53 (month nr: 0)
d = new Date(2010,0,3,23,59,59);
expect(fds(d,"WW")).toBe("53");
d = new Date(2010,0,3,23,59,60);
expect(fds(d,"WW")).toBe("1");
// 2014 12 29 is in week 1 of 2015 (month nr. 11)
d = new Date(2014,11,29,23,59,59);
expect(fds(d,"WW")).toBe("1");
expect(fds(d,"wYYYY")).toBe("2015");
});
it("should parse text references", function() {