(js) Fix computation of week number

pull/225/head
Francis Lachapelle 2016-11-07 15:01:09 -05:00
parent 4a6e53934b
commit f4580c8920
2 changed files with 14 additions and 5 deletions

1
NEWS
View File

@ -12,6 +12,7 @@ Bug fixes
- [core] fixed condition in weekly recurrence calculator
- [web] fixed mail settings persistence when sorting by arrival date
- [web] disable submit button while saving an event or a task (#3880)
- [web] fixed computation of week number
3.2.1 (2016-11-02)
------------------

View File

@ -325,6 +325,9 @@ Date.prototype.beginOfDay = function() {
return beginOfDay;
};
/**
* See [SOGoUser firstWeekOfYearForDate:]
*/
Date.prototype.firstWeekOfYearForDate = function(localeProvider) {
var firstWeekRule, dayOfWeek, januaryFirst, firstWeek;
@ -354,19 +357,24 @@ Date.prototype.firstWeekOfYearForDate = function(localeProvider) {
return firstWeek;
};
/**
* See [SOGoUser weekNumberForDate:]
*/
Date.prototype.getWeek = function(localeProvider) {
var firstWeek, previousWeek, weekNumber;
var firstWeek, previousWeek, weekNumber, clone;
firstWeek = this.firstWeekOfYearForDate(localeProvider);
if (firstWeek.getTime() < this.getTime()) {
weekNumber = 1 + Math.floor((this.getTime() - firstWeek.getTime()) / (86400000 * 7));
clone = new Date(this.getTime());
clone.addDays(6);
firstWeek = clone.firstWeekOfYearForDate(localeProvider);
if (firstWeek.getTime() < clone.getTime()) {
weekNumber = 1 + Math.floor((clone.getTime() - firstWeek.getTime()) / (86400000 * 7));
}
else
{
// Date is within the last week of the previous year;
// Compute the previous week number to find the week number of the requested date.
// The number will either be 52 or 53.
previousWeek = new Date(this.getTime());
previousWeek = new Date(clone.getTime());
previousWeek.addDays(-7);
firstWeek = previousWeek.firstWeekOfYearForDate(localeProvider);
weekNumber = 2 + Math.floor((previousWeek.getTime() - firstWeek.getTime()) / (86400000 * 7));