Мне нужно использовать 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 не имеет его, нужно простое решение для простой задачи.
strtotime('2012W01 - 2 days')
на субботу и
strtotime('2012W01 - 1 day')
на воскресенье, так как недельный звонок всегда вернет вас в понедельник.
Публикация в качестве ответа, а не комментария, так как OP заявил, что хочет сделать это в одном вызове strtotime () в комментарии 🙂
Попробуйте такую функцию
на субботу:
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');