1 date.inc | date_week_range($week, $year) |
Calculates the start and end dates for a calendar week.
The dates are adjusted to use the chosen first day of week for this site.
Parameters
int $week: The week value.
int $year: The year value.
Return value
array: A numeric array containing the start and end dates of a week.
File
- core/
includes/ date.inc, line 938 - Date API functions.
Code
function date_week_range($week, $year) {
$first_day = config_get('system.date', 'first_day');
// If the first day of the week is Monday, use the ISO-8601 defined range.
// See https://en.wikipedia.org/wiki/Week#Week_numbering
if ($first_day == 1) {
return date_iso_week_range($week, $year);
}
$min_date = new BackdropDateTime($year . '-01-01 00:00:00');
$min_date->setTimezone(date_default_timezone_object());
// Move to the right week.
date_modify($min_date, '+' . strval(7 * ($week - 1)) . ' days');
// Move backwards to the first day of the week.
$day_wday = date_format($min_date, 'w');
date_modify($min_date, '-' . strval((7 + $day_wday - $first_day) % 7) . ' days');
// Move forwards to the last day of the week.
$max_date = clone($min_date);
date_modify($max_date, '+6 days');
if (date_format($min_date, 'Y') != $year) {
$min_date = new BackdropDateTime($year . '-01-01 00:00:00');
}
return array($min_date, $max_date);
}