Получаете отметку времени на сегодня в полночь?
Как бы я мог получить метку времени в php на сегодня в полночь. Скажем, сегодня понедельник, 5 вечера, и мне нужна отметка времени на понедельник (сегодня) в полночь (12 часов утра), которая уже произошла.
Спасибо
6 answers
$timestamp = strtotime('today midnight');
Возможно, вы захотите взглянуть, что может предложить PHP: http://php.net/datetime
Я думаю, что вам следует использовать новый объект PHP DateTime, так как у него нет проблем с датами, выходящими за рамки 32-битных ограничений, которые есть у strtotime(). Вот пример того, как вы могли бы получить сегодняшнюю дату в полночь.
$today = new DateTime();
$today->setTime(0,0);
Или, если вы используете PHP 5.4 или более поздней версии, вы можете сделать это следующим образом:
$today = (new DateTime())->setTime(0,0);
Затем вы можете использовать echo $today->format('Y-m-d');
, чтобы получить формат, в котором вы хотите вывести свой объект.
Сегодня в полночь. Легко.
$stamp = mktime(0, 0, 0);
$today_at_midnight = strtotime(date("Ymd"));
Должен дать вам то, что вам нужно.
объяснение
Что я сделал, так это использовал функцию даты PHP, чтобы получить сегодняшнюю дату без каких-либо ссылок на время, а затем передать ее в функцию "строка во время", которая преобразует дату и время в метку времени эпохи. Если у него нет времени, он предполагает первую секунду этого дня.
Ссылки: Функция даты: http://php.net/manual/en/function.date.php
Строка Для Времени: http://us2.php.net/manual/en/function.strtotime.php
Вы хотите рассчитать время самого последнего небесного события, когда солнце прошло прямо у вас под ногами, с поправкой на местные обычаи отмечать полдень, а также, возможно, скорректировать так, чтобы у людей оставалось достаточно дневного света после возвращения домой с работы, и по другим политическим соображениям.
Устрашающе, верно? На самом деле это распространенная проблема, но полный ответ зависит от местоположения:
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
Потенциальными определениями "здесь" являются указан в https://secure.php.net/manual/en/timezones.php
$midnight = strtotime('midnight');
допустимо
Вы также можете попробовать
strtotime('12am')
или strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
. Я пропустил добавление сегодня до полуночи, потому что по умолчанию сегодня.