Как проверить и сравнить диапазон дат php - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь сравнить две даты, текущее время и меньше ли оно даты, которую я установил. К сожалению, условие никак не хочет работать

function is_store_open_to_thursday($html, $product)
{
    date_default_timezone_set('Europe/Warsaw');

    $datetime1 = new DateTimeImmutable('thursday 12:00:00');
    $datetime2 = $datetime1->modify('+3 days');
    $now = time();
    $html = '<form action="' . esc_url($product->add_to_cart_url()) . '" class="cart" method="post" enctype="multipart/form-data">';
    $html .= woocommerce_quantity_input(array(), $product, false);


    if ($now >= strtotime($datetime1) && $now <= strtotime($datetime2)) {
        $html .= '<p>WORK</p>';
    }
    else{
        $html .= 'NOT WORKING';
    }

    $html .= '</form>';
    return $html;
}

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Переменные $datetime1 и datetime2 являются объектами. Поэтому, если вы передадите их функции strtotime, вы должны увидеть в своем файле php .log предупреждения:

<b>Warning</b>: strtotime() expects parameter 1 to be string, object given in.

Изменить ваши условия заявление:

if ($now >= $datetime1->getTimestamp() && $now <= $datetime2->getTimestamp())
1 голос
/ 02 мая 2020

Это не очень круто, но должно работать:

$now = new \DateTime();
$startDate = new \DateTimeImmutable("Thursday 12:00:00");
$endDate = $startDate->modify("+3 days");

if(
    ($now->format("N H:i:s") >= $startDate->format("N 12:00:00"))
    && ($now->format("N H:i:s") <= $endDate->format("N 12:00:00"))
) {
    echo "Date in range!";
} else {
    echo "Date out of range!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...