Как найти метку времени unix для начала следующего дня в php?

У меня есть метка времени unix для текущего времени. Я хочу получить временную метку unix для начала следующего дня.

$current_timestamp = time();
$allowable_start_date = strtotime('+1 day', $current_timestamp);

Как я делаю это сейчас, я просто добавляю 1 весь день к метке времени unix, когда вместо этого я хотел бы выяснить, сколько секунд осталось в этот текущий день, и только добавить, что много секунд, чтобы получить метку времени unix для самой первой минуты следующего дня.

каков наилучший способ сделать это?

6 ответов


самый простой способ просто "сделать " в тот раз:

$tomorrowMidnight = mktime(0, 0, 0, date('n'), date('j') + 1);

цитата:

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

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


Вы можете легко получить завтра в полночь запрос:

$tomorrow_timestamp = strtotime('tomorrow');

Если вы хотите иметь возможность делать переменное количество дней, вы можете легко сделать это так:

$days = 4;
$x_num_days_timestamp = strtotime(date('m/d/Y', strtotime("+$days days"))));

$tomorrow = strtotime('+1 day', strtotime(date('Y-m-d')));
$secondsLeftToday = time() - $tomorrow;

что-то простое, как:

$nextday = $current_timestamp + 86400 - ($current_timestamp % 86400);

это то, что я использую.


начало следующего дня рассчитывается следующим образом:

<?php

$current_timestamp = time();
$allowable_start_date = strtotime('tomorrow', $current_timestamp);

echo date('r', $allowable_start_date);

?>

если ему нужно следовать вашим специфическим требованием:

<?php

$current_timestamp = time();
$seconds_to_add = strtotime('tomorrow', $current_timestamp) - $current_timestamp;

echo date('r', $current_timestamp + $seconds_to_add);

?>

мой вариант:

 $allowable_start_date = strtotime('today +1 day');