(js) Fix computation of week number
parent
4a6e53934b
commit
f4580c8920
1
NEWS
1
NEWS
|
@ -12,6 +12,7 @@ Bug fixes
|
||||||
- [core] fixed condition in weekly recurrence calculator
|
- [core] fixed condition in weekly recurrence calculator
|
||||||
- [web] fixed mail settings persistence when sorting by arrival date
|
- [web] fixed mail settings persistence when sorting by arrival date
|
||||||
- [web] disable submit button while saving an event or a task (#3880)
|
- [web] disable submit button while saving an event or a task (#3880)
|
||||||
|
- [web] fixed computation of week number
|
||||||
|
|
||||||
3.2.1 (2016-11-02)
|
3.2.1 (2016-11-02)
|
||||||
------------------
|
------------------
|
||||||
|
|
|
@ -325,6 +325,9 @@ Date.prototype.beginOfDay = function() {
|
||||||
return beginOfDay;
|
return beginOfDay;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See [SOGoUser firstWeekOfYearForDate:]
|
||||||
|
*/
|
||||||
Date.prototype.firstWeekOfYearForDate = function(localeProvider) {
|
Date.prototype.firstWeekOfYearForDate = function(localeProvider) {
|
||||||
var firstWeekRule, dayOfWeek, januaryFirst, firstWeek;
|
var firstWeekRule, dayOfWeek, januaryFirst, firstWeek;
|
||||||
|
|
||||||
|
@ -354,19 +357,24 @@ Date.prototype.firstWeekOfYearForDate = function(localeProvider) {
|
||||||
return firstWeek;
|
return firstWeek;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See [SOGoUser weekNumberForDate:]
|
||||||
|
*/
|
||||||
Date.prototype.getWeek = function(localeProvider) {
|
Date.prototype.getWeek = function(localeProvider) {
|
||||||
var firstWeek, previousWeek, weekNumber;
|
var firstWeek, previousWeek, weekNumber, clone;
|
||||||
|
|
||||||
firstWeek = this.firstWeekOfYearForDate(localeProvider);
|
clone = new Date(this.getTime());
|
||||||
if (firstWeek.getTime() < this.getTime()) {
|
clone.addDays(6);
|
||||||
weekNumber = 1 + Math.floor((this.getTime() - firstWeek.getTime()) / (86400000 * 7));
|
firstWeek = clone.firstWeekOfYearForDate(localeProvider);
|
||||||
|
if (firstWeek.getTime() < clone.getTime()) {
|
||||||
|
weekNumber = 1 + Math.floor((clone.getTime() - firstWeek.getTime()) / (86400000 * 7));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Date is within the last week of the previous year;
|
// Date is within the last week of the previous year;
|
||||||
// Compute the previous week number to find the week number of the requested date.
|
// Compute the previous week number to find the week number of the requested date.
|
||||||
// The number will either be 52 or 53.
|
// The number will either be 52 or 53.
|
||||||
previousWeek = new Date(this.getTime());
|
previousWeek = new Date(clone.getTime());
|
||||||
previousWeek.addDays(-7);
|
previousWeek.addDays(-7);
|
||||||
firstWeek = previousWeek.firstWeekOfYearForDate(localeProvider);
|
firstWeek = previousWeek.firstWeekOfYearForDate(localeProvider);
|
||||||
weekNumber = 2 + Math.floor((previousWeek.getTime() - firstWeek.getTime()) / (86400000 * 7));
|
weekNumber = 2 + Math.floor((previousWeek.getTime() - firstWeek.getTime()) / (86400000 * 7));
|
||||||
|
|
Loading…
Reference in New Issue