mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-26 04:14:19 +00:00
(js) Fix computation of week number
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user