Я ищу, как получить конкретный день от времени:
скажем, у меня есть 2 даты: с 1 января 2016 года по 1 января 2017 года мне нужно будет знать, сколько там понедельников, или вторников, или дней, которые я выберу на входе, который я дал.
Есть ли лучший способ добиться этого?
ОБНОВЛЕННЫЙ ОТВЕТ
<?php
$count = 0;
$days = array("Monday", "Friday");
foreach ($days as $day) {
$startDate = '1 Jan 2016';
$endDate = '1 Jan 2017';
$endDate = strtotime($endDate);
$i = '';
for ($i = strtotime($day, strtotime($startDate)); $i <= $endDate; $i = strtotime('+1 week', $i)) {
echo date('l Y-m-d', $i) . '<br>';
$count++;
}
}
echo $count;
Попробуйте изменить этот пример:
<?php
//http://php.net/manual/en/class.dateperiod.php#109846
$begin = new DateTime( '2012-08-01' );
$end = new DateTime( '2012-08-31' );
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
//HERE ADD YOUR CONDITIONS...
echo $date->format("Ymd") . "<br>";
}
?>
Вы можете просмотреть это решение PHP создать диапазон дат
получить все дни и просмотреть их все, получить первый понедельник после даты начала и затем повторить 7 дней за раз:
$endDate = strtotime($endDate);
for($i = strtotime('Monday', strtotime($startDate)); $i <= $endDate; $i =strtotime('+1 week', $i))
echo date('l Y-m-d', $i);