Как получить дату и добавить к ней «х» часов

Я получил форму заявки на своей странице, которая закрывается на определенную дату. Тем не менее, он закрывается точно, как только время достигнет этой определенной даты (т.е. 13 апреля), но я бы хотел, например, чтобы оно закрылось 13 апреля в 14:00. Я создал раскрывающийся список в моем WordPress (add_time) с выводом строки 14:00. Как я могу добавить это к дате, чтобы $ daysleft включал и эти добавленные часы?

Что-то вроде?

$addedTime = get_field('add_time');
$addedTime = strtotime ($addedTime);
$daysleft = floor($datediff/(60*60*24)+$addedtime)) +1 <--- (not sure where to one is for)

Ниже, если полный код, как это в настоящее время

<?php
$now = time();
$dueDate = get_field('due_date');
$addedTime = get_field('add_time');
$dueDate = strtotime($dueDate);
$datediff = $dueDate - $now;
$daysLeft = floor($datediff/(60*60*24))+1;
$daysLeft = intval($daysLeft);
?>
<?php
if($daysLeft == 0) {
echo 'Last day';
} elseif($daysLeft < 0) {
echo 'Deadline passed';
} elseif($daysLeft == 1) {
echo $daysLeft.' days left';
} else {
echo $daysLeft.' days left';
}
?>

1

Решение

Я в первую очередь рекомендую использовать углерод Но вы также можете использовать стандарт DateTime объект.

DateTime

$date = new DateTime('20-04-2017');
$date->add(new DateInterval('P1D'));
echo $date->format('d-m-Y');

углерод

use Carbon\Carbon;

$date = new Carbon::createFromFormat('d-m-Y','20-04-2017');
$nextDay = $date->addDay();
echo $nextDay->format('d-M-Y');

Теперь для вашего приложения я бы использовал Carbon следующим образом:

$enddate = Carbon::createFromFormat('d-m-Y H:i:s','14-04-2017 14:00:00');
if(Carbon::now()->gte($enddate)) {
//Application ended code
}
else {
// application active code
}

Если вы хотите использовать DateTime, вы можете сделать это:

$enddate = new DateTime('2017-04-13 13:00:00');
$now = new DateTime('now');

$diff = $enddate->getTimestamp() - $now->getTimestamp();

if($diff >= 0) {
echo 'active';
}
else {
echo 'inactive';
}
1

Другие решения

Для операций с датой и временем лучше использовать Класс DateTime

Для получения времени за 1 час вы можете использовать следующий код:

$time = new DateTime();
$time->modify("+1 hour");
echo $time->format("Y-m-d H:i:s");

С этим классом вы также можете сравнить с датами

0

По вопросам рекламы [email protected]