Время Unix для временной метки на следующий день

#php #time

#php #время

Вопрос:

У меня есть время, в которое человек получил задание (1555133436), мне нужно отобразить время, по истечении которого он сможет получить их снова (24 часа)

Я пытался сделать это:

 $date='1555133436';

$diff=date('H:i:s', 86400- (time() - $date));
echo $diff;
 

В ответ я получаю около 15:24:41

Комментарии:

1. Не могли бы вы также объяснить, что не так с этим результатом?

2. Мне нужно получить время через кору, вы можете снова получить событие, например, в последний раз задача была получена в 9:00 и должна принести: осталось 23:30

3. Итак, что не так с вашим существующим кодом? Основываясь на вашем комментарии, который, похоже, делает то, что вы хотите.

Ответ №1:

Обновить

Из вашего комментария кажется, что вы хотите узнать, как долго пользователь должен ждать, чтобы снова увидеть назначение (через 24 часа после того, как они впервые увидели его). Вы можете достичь этого с помощью этого кода, который создает DateInterval объект, представляющий эту разницу, а затем выводит оставшиеся часы и минуты:

 date_default_timezone_set('UTC');
$date='1555133436';
$next_date = new DateTime("@$date");
// find out when they can next access the data
$next_date->modify(' 1 day');
// now find out how long they must wait
$wait = $next_date->diff(new DateTime(), true);
echo $wait->format("You must wait %h hours and %i minutes to access the data againn");
 

Вывод:

 You must wait 21 hours and 38 minutes to access the data again
 

Демонстрация на 3v4l.org

Оригинальный ответ (поиск времени, в которое можно было бы снова получить доступ к данным)

Вы можете преобразовать временную метку в DateTime объект, а затем добавить 1 день к значению:

 $date='1555133436';
$next_date = (new DateTime("@$date"))->modify(' 1 day');
echo $next_date->format('Y-m-d H:i:s');
 

Вывод:

 2019-04-14 05:30:36
 

Если вы хотите, чтобы результат также отображался как временная метка, просто используйте

 echo $next_date->format('U');
 

Вывод:

 1555219836
 

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

 echo $date   86400;
 

Демонстрация на 3v4l.org

Комментарии:

1. Следует отметить: не каждый день имеет 24 часа, следовательно, вычисление со статическими секундами может иметь побочные эффекты