string — какой самый эффективный способ получить 1 или 2 дня до числа первого дня недели и года в php с нативными функциями

Мне нужно использовать php, чтобы вернуть субботу или воскресенье перед указанным номером недели и годом, например:

date('Y-m-d',strtotime("2011W011")) #returns '2011-01-03', but I need it to return '2011-01-01 or 2011-01-02 instead
date('Y-m-d',strtotime("2011W014")) #returns '2011-01-06'

что-то вроде:

date('Y-m-d',strtotime("2011W01-2")) #to return '2011-01-01'
date('Y-m-d',strtotime("2012W01-2")) #to return '2011-12-31'

Я надеюсь на что-то простое & эффективный. Пожалуйста, не предлагайте класс DateTime … потому что мой php не имеет его, нужно простое решение для простой задачи.

-4

Решение

strtotime('2012W01 - 2 days') на субботу и
strtotime('2012W01 - 1 day') на воскресенье, так как недельный звонок всегда вернет вас в понедельник.

Публикация в качестве ответа, а не комментария, так как OP заявил, что хочет сделать это в одном вызове strtotime () в комментарии 🙂

1

Другие решения

Попробуйте такую ​​функцию

на субботу:

function LastSaturday($time_string){
return strtotime('last saturday', strtotime($time_string));
}

или на воскресенье:

function LastSunday($time_string){
return strtotime('last sunday', strtotime($time_string));
}

В основном вы просто используете strtotime('last sunday', strtotime('2011W01')); и заменить sunday с того дня, когда вы хотели бы.

Больше информации

Также посмотреть Комментарий CBroe

РЕДАКТИРОВАТЬ

Для более эффективного использования функций

function LastDay($day, $time_string){
$day = strtolower($day);
return strtotime("last $day", strtotime($time_string));
}

Использование:

LastDay('sunday', '2011W01');
1

По вопросам рекламы [email protected]