Это решит проблему для вас. Это в основном вытекает из ответа Михаила Димитрова, но упрощает и несколько сокращает его. Это может быть однострочное решение, если вы действительно этого хотите.
function getMondaysDate($year, $week) {
if (!is_numeric($year) || !is_numeric($week)) {
return null;
// or throw Exception, etc.
}
$timestamp = strtotime("+$week weeks Monday January $year");
$prettyDate = date('d M Y');
return $prettyDate;
}
Пара заметок:
- Как и выше,
strtotime("Monday January $year")
даст вам метку времени первого понедельника года.
- Как указано выше, + X недель будут увеличивать указанную дату на столько недель.
Вы можете проверить это, попробовав:
date('c',strtotime('Sunday Jan 2018'));
// "2018-01-07T00:00:00+11:00" (or whatever your timezone is)
date('c',strtotime('+1 weeks Sunday Jan 2018'));
// "2018-01-14T00:00:00+11:00" (or whatever your timezone is)
date('c',strtotime('+52 weeks Sunday Jan 2018'));
// "2019-01-06T00:00:00+11:00"