У меня две даты:
$today = date('j F Y');
$display_until = date('j F Y');
($ display_until технически исходит из селектора даты поля ACF):
В настоящее время я использую:
<?php if ($today < $display_until) : ?>
*where the magic should happen*
<?php endif; ?>
Но это не разграничение событий, как ожидалось ... может ли кто-нибудь указать мне в правильном направлении?
Или это была бы моя идея
Выложите пожалуйста код, в котором обрабатываются переменные $today и $display_until. Объясните, пожалуйста, чего вы хотите достичь?
@Stender - Я бы просто использовал что-нибудь вроде $dt_today = new DateTime($today);
Вы можете взглянуть на второй аргумент функции даты в официальном документация.
@rmalviya Хммм - я хочу преобразовать строку даты в дату, но я не создаю дату.
Для этого вы можете использовать функцию strtotime php. например date('j F Y', strtotime('2017-05-01'));. Передайте строку даты в качестве параметра в strtotime.
@rmalviya Сработало как шарм. Рад, что вы добавили его в качестве ответа, даже если он кажется немного тривиальным.
Я бы лично использовал DateTime.






Из дальнейшего объяснения из ваших комментариев вы можете использовать функцию strtotime php для преобразования любой строки, похожей на дату, в метку времени, а позже вы можете передать эту метку времени в функцию date, чтобы вернуть дату в желаемом формате.
Вот код для этого:
date('j F Y', strtotime('2017-05-01'));
если хотите сравнения, то:
if (strtotime('Jul 10, 2017') < strtotime('+10 days')) {
// Your logic
}
у вас есть два решения:
преобразовать даты в метку времени, а затем сравнить их:
$today = date('j F Y');
$display_until = date('j F Y');
if (strtotim($today) < strtotime($display_until)){
//
}
использовать объект DateTime:
$today = new DateTime();
$diplay_until = new DateTime(); // or new DateTime()->modify('+1 month');
if ($today < $diplay_until){
// do something
}
Вы должны преобразовать их в временные метки эпох, тогда это будет всего два целых числа.