calendar: Stop computing week number ourselves
Correctly computing the ISO week number is tricky and we already have code in the platform to do it, so just refer its computation to GDateTime rather than doing it ourselves. https://bugzilla.gnome.org/show_bug.cgi?id=736722
This commit is contained in:
parent
31d375093e
commit
1e8e5d4671
@ -88,23 +88,6 @@ function _formatEventTime(event, clockFormat, periodBegin, periodEnd) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getCalendarWeekForDate(date) {
|
|
||||||
// Based on the algorithms found here:
|
|
||||||
// http://en.wikipedia.org/wiki/Talk:ISO_week_date
|
|
||||||
let midnightDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
||||||
// Need to get Monday to be 1 ... Sunday to be 7
|
|
||||||
let dayOfWeek = 1 + ((midnightDate.getDay() + 6) % 7);
|
|
||||||
let nearestThursday = new Date(midnightDate.getFullYear(), midnightDate.getMonth(),
|
|
||||||
midnightDate.getDate() + (4 - dayOfWeek));
|
|
||||||
|
|
||||||
let jan1st = new Date(nearestThursday.getFullYear(), 0, 1);
|
|
||||||
let diffDate = nearestThursday - jan1st;
|
|
||||||
let dayNumber = Math.floor(Math.abs(diffDate) / MSECS_IN_DAY);
|
|
||||||
let weekNumber = Math.floor(dayNumber / 7) + 1;
|
|
||||||
|
|
||||||
return weekNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getCalendarDayAbbreviation(dayNumber) {
|
function _getCalendarDayAbbreviation(dayNumber) {
|
||||||
let abbreviations = [
|
let abbreviations = [
|
||||||
/* Translators: Calendar grid abbreviation for Sunday.
|
/* Translators: Calendar grid abbreviation for Sunday.
|
||||||
@ -669,7 +652,7 @@ const Calendar = new Lang.Class({
|
|||||||
this._buttons.push(button);
|
this._buttons.push(button);
|
||||||
|
|
||||||
if (this._useWeekdate && iter.getDay() == 4) {
|
if (this._useWeekdate && iter.getDay() == 4) {
|
||||||
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
|
let label = new St.Label({ text: iter.toLocaleFormat('%V'),
|
||||||
style_class: 'calendar-day-base calendar-week-number'});
|
style_class: 'calendar-day-base calendar-week-number'});
|
||||||
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
|
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user