Как задать/установить дату когда закончится показ опубликованного поста

77
03 марта 2022, 17:10

Суть происходящего:
есть таблица в бд в которую записываются данные для публикации поста.
в этой таблице есть 2 главных столбца - srart_public и finish_public.
в srart_public записываю дату когда опубликован пост в формате timestamp.
в finish_public мне нужно записать дату окончания показа поста. т.е. если в srart_public будет записана дата 2020-01-20 11:15:00, то в finish_public мне нужно записать 2020-01-21 11:15:00 - через 24 часа.

Вопрос 1: как реализовать запись даты в finish_public с интервалом 24 часа?
Вопрос 2: как узнать соответствует ли дата записанная в finish_public с настоящей датой? чтобы потом сделать необходимые действия с опубликованным постом.

Работа с датами для меня темный лес. Поиски в гугле только запутали окончательно.
Поэтому прошу вашей помощи в реализации такого функционала дабы разобраться как работать с датами.
P.S. если вам что то не понятно с выше написанного, то, пожалуйста, скажите что добавить или исправить.

Answer 1

Дату окончания показа поста можете записать так:

$start_public = time(); // или другая дата
$finish_public = date("Y-m-d H:i:s", $start_public + 60 * 60 * 24);

A реализацию фильтра по дате лучше перенести в запрос в базу данных на выборку статей, дабы не тянуть лишнее:

// в общем случае
"SELECT * FROM articles WHERE finish_public > NOW()"
// или
"SELECT * FROM articles WHERE finish_public > " . $finish_public

mysql now()

Answer 2
<?php
$currentDate = date("Y-m-d h:i:s");
$srart_public = '2020-01-20 11:15:00';
$finish_public = date('Y-m-d h:i:s', strtotime("+24 hours", strtotime($srart_public))); // Прибавление к дате 24 часа.
//Если в точности до времени, как написано у Вас в примере.
if ($currentDate <= $finish_public){
    echo 'Дата и время ' . $finish_public . ' позже текущего времени';
} else {
    echo 'Дата и время ' . $finish_public . ' меньше текущего времени';
}
//Если нужно сравнивать только даты

$currentDate = date("Y-m-d");
$srart_public = '2020-01-20 11:15:00';
$finish_public = date('Y-m-d', strtotime("+24 hours", strtotime($srart_public))); // Прибавление к дате 24 часа.
if ($currentDate <= $finish_public){
    echo 'Дата ' . $finish_public . ' позже текущей даты';
} else {
    echo 'Дата ' . $finish_public . ' меньше текущей даты';
}
READ ALSO
Ошибка 500 в подключении мобильной версии?

Ошибка 500 в подключении мобильной версии?

Подключаю отдельную мобильную версию из папки в корне сайта или на поддоменеИспользую этот плагин https://github

91
WP. Как удалить тег(метку) у товара?

WP. Как удалить тег(метку) у товара?

wp_set_object_terms(44723, 'Новинка', 'product_tag', true);

74
Как получить значение из объекта PHP?

Как получить значение из объекта PHP?

Получаю следующий объект:

114
Почему в PHP !== возможно, а !=== не бывает?

Почему в PHP !== возможно, а !=== не бывает?

Потому, что логическая конструкция ! работает только с приведенными типами?

102