Как установить "первый день недели" в четверг в PHP

Я хочу установить первый день недели в четверг (не в воскресенье или в понедельник), потому что это дата отсечения компании.

У меня уже есть код для определения текущего номера недели, но он начинается в воскресенье или понедельник.

Как изменить их в моих предпочтениях?

function findweek($date) {
    $monthstart=date("N",strtotime(date("n/l/Y",strtotime($date))));
    $newdate=(date("j",strtotime($date))+$monthstart)/7;
    $ddate=floor($newdate);
    if($ddate != $date) {
        $ddate++;
    }
    return $ddate;
}

Ответ 1

Это должно работать.

function findweek($date, $type = "l") {
    $time = strtotime($date);
    return date($type, mktime(0, 0, 0, date("m", $time) , date("d", $time)-date("d", $time)+1, date("Y", $time)));
}

echo findweek('2015-09-16');

Ответ 2

http://php.net/manual/en/datetime.formats.relative.php говорит, что с PHP версии 5.6.23, 7.0.8 "Недели всегда начинаются в понедельник. Раньше, воскресенье также считаться начавшим неделю". Тем не менее, ваша проблема в том, что количество возвращенных недель может быть неправильным в зависимости от того, наступает ли сегодня четверг или до четверга текущей недели? Возможно, попробуйте что-то вроде этого:

$date = new DateTime();
$week = intval($date->format('W'));
$day = intval($date->format('N'));
echo $day < 4 ? $week-1 : $week;

Если вычесть 1, это не ответ, который вы могли бы сыграть с добавлением/вычитанием, сравнивая результат с фактическим ответом, который, как вы знаете, будет истинным, пока не получите правильную формулу. Надеюсь, это поможет!