Разница в дате с пользовательским форматом - PullRequest
0 голосов
/ 15 марта 2019

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

Я сохраняю дату с ACF, как dmy, и тоже читаю.

Когда я делаю этот тип сравнения, он работает НО только на текущий месяц.Независимо от того, что я делаю, это работает, что я сделал, что работает, любой совет, пожалуйста?

if(strtotime(date('d.m.y')) > strtotime($cd_date_from)) {
   $output .= ' class="event-passed"';
}

Это означает, что я скрываю только событие в строке таблицы, что дата старшечем сегодня (показывает сегодня).Если дата 15.03.19 или 28.03.19, она показывает НО, если это 15.04.19 (другой месяц), то нет.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Даты в форматах m / d / y или dmy устраняются, если посмотреть на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что используется американский m / d / y;тогда как, если разделителем является тире (-) или точка (.), то подразумевается европейский формат dmy.Однако, если год указан в двузначном формате, а разделителем является тире (-), строка даты анализируется как ymd.

Чтобы избежать потенциальной двусмысленности, лучше использовать ISO 8601 (ГГГГ-MM-DD) даты или DateTime :: createFromFormat (), когда это возможно.

http://php.net/manual/en/function.strtotime.php

Использование:

if(strtotime(date('Y-m-d')) > strtotime($cd_date_from)) {
   $output .= ' class="event-passed"';
}

и передача значений формата Y-m-d в$cd_date_from

0 голосов
/ 15 марта 2019

гораздо проще использовать \ DateTimeInterface для работы с DateTime в php: \ DateTime :: createFromFormat

<?php
$format = 'd.m.y';
$cd_date_from = '12.03.19';
$date = \DateTime::createFromFormat($format, $cd_date_from);
$date->setTime(0,0,0,0);
if (new \DateTime() > $date) {
    echo 'hello';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...