Преобразование дня недели в даты текущего месяца с помощью MYSQL и PHP

Потратил некоторое время на поиск и не смог найти никаких ответов. Действительно простой вопрос, я надеюсь.

В моей базе данных есть строковый столбец dayOfWeek.

Я использую это, чтобы отслеживать, на какой день недели запланированы еженедельные события. Обычно я сопоставляю dayOfWeek с текущим днем ​​с помощью PHP и отображаю правильные события.

То, что я хочу сделать, это показать календарь в будущее, который составляет список будущих дат еженедельного повторяющегося события.

Например, если событие происходит во вторник, а февраль 2017 года имеет вторники 7, 14, 21 и 28 числа. Я хотел бы использовать PHP для отображения как таковой.

Я знаю, что strtotime() используется для того, чтобы сделать обратное, найти день по дате, но можно ли легко сделать обратное?

Извините, если мой вопрос плохо сформулирован или отсутствует информация.

3 ответа

Решение

ИСПОЛЬЗУЙТЕ ДЕЛО ВТОРНИКА 2017 ФЕВРАЛЯ

$n=date('t',strtotime("2017-02-01")); // find no of days in this month
$dates=array();
for ($i=1;$i<=$n;$i++){
     $day=date("D",strtotime("2017-02-".$i)); //find weekdays

    if($day=="Tue"){
        $dates[]="2017-02-".$i;
    }
}
print_r($dates);

http://phpfiddle.org/main/code/s8wq-xx44

Вы могли бы сделать это:

// The day of the week.
$dayOfEvent = row['day'];
// Say, you wanted the next 5 weeks. 
$numberOfWeeks = 5;
$tempDate = date(U);
$counter = 0;

do{
    $tempDate = $tempDate + 86,164;
    if(date('D', $tempDay) == 'Tue'){
        echo date('l jS \of F Y', $tempDay);
        $counter++;
    }
}while($counter < $numberOfWeeks);

Сначала попробуйте найти дату для дня на текущей неделе. После этого продолжайте добавлять 7-дневные кратные к нему.

<?php 
    // $timestamp = now();

    for ($i=0; $i < 7; $i++) { 

        $days = $i." days";
        $t = date('Y-m-d', strtotime($days));
        $dayOfTheDay = date("D",strtotime($t));
        if ( $dayOfTheDay == day from table )
        {
            $current_date = $t;
            break;
        } 
    }

    for ($i=0; $i < 200; $i++) { 
        in this loop add 7 days to current_date
    }
 ?>
Другие вопросы по тегам