1234Amit Ответов: 1

Как напечатать нечетные даты месяца, используя формат даты (суббота 10 февраля 2018 г.)


Ниже приведен код, с которым я пробовал работать, но он отображает только первый день февраля месяца, но вместо этого я хочу все нечетные дни месяца, так какие же изменения я должен сделать, чтобы получить желаемый результат?

Что я уже пробовал:

$startdate=strtotime("2/1/2018");
            $enddate=strtotime("N", $startdate);
            while ($startdate < $enddate) 
            {
            echo date(" D d, M, Y ", $startdate) . "<br>";
            $startdate = strtotime("+2 day", $startdate);
            } 

1 Ответов

Рейтинг:
4

Christiaan van Bergen

Установка даты начала на 1 февраля, установка даты окончания +1 месяц и использование функции модуля для проверки нечетных дней могут сделать трюк

$startdate=strtotime("2/1/2018");
$enddate=strtotime("+1 months", $startdate);
while ($startdate < $enddate) 
{
    if (date("d", $startdate)%2==1)
    {
        $display = date(" D d, M, Y ", $startdate);
        var_dump($display);
    }
    $startdate = strtotime("+1 day", $startdate);
} 
Это приводит к тому, что
string(19) " Thu 01, Feb, 2018 "
string(19) " Sat 03, Feb, 2018 "
string(19) " Mon 05, Feb, 2018 "
string(19) " Wed 07, Feb, 2018 "
string(19) " Fri 09, Feb, 2018 "
string(19) " Sun 11, Feb, 2018 "
string(19) " Tue 13, Feb, 2018 "
string(19) " Thu 15, Feb, 2018 "
string(19) " Sat 17, Feb, 2018 "
string(19) " Mon 19, Feb, 2018 "
string(19) " Wed 21, Feb, 2018 "
string(19) " Fri 23, Feb, 2018 "
string(19) " Sun 25, Feb, 2018 "
string(19) " Tue 27, Feb, 2018 "


1234Amit

сэр, не могли бы вы объяснить мне эту логику?

Christiaan van Bergen

Конечная дата-это +1 месяц к начальной дате (что делает ее в данном случае 01 марта). Из-за этого цикл while будет работать. Первая проверка внутри цикла while-это проверка того, является ли число дня нечетным числом. Мы делаем это, вычисляя по модулю 2 (остаток от нечетного числа всегда равен "1"). Если он нечетный, мы показываем дату, как вы просили. Последнее, что мы делаем в цикле while,-это увеличиваем $startdate с +1 днем.
Вы можете прочитать о модуле здесь: http://php.net/manual/en/internals2.opcodes.mod.php

1234Amit

- спасибо, сэр.

Maciej Los

5ed!