Как я могу заставить strtotime идти в начало дня - PullRequest
0 голосов
/ 25 января 2019

У меня есть проблема в моем коде, из-за которой мне иногда нужно добавить 1 день, 2 дня или иногда даже 3 дня к текущему дню.

Я использую

$today = strtotime('today');

затем на основе праздников, выходных и других параметров мне может понадобиться добавить дни / будни, например, так:

$date = strtotime('+2 weekdays', $today);

или

$date = strtotime('+2 days', $today);

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

Любая помощь или понимание по этому вопросу, которое я лично имеюбудет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 25 января 2019
$date = new DateTime();
$date->add(new DateInterval('P"your needed days"D'));
echo $date->format('Y-m-d');
eg:'P2D'
OUTPUT:::2019-01-27

в этом 'P' указывает период в дате, а затем вы можете добавить год (Y), месяц (M) и день (D), а затем для времени необходимо указать время (T), а затем час(H), min (i или M) и sec (S).см. ниже http://php.net/manual/en/dateinterval.format.php

0 голосов
/ 25 января 2019

Вы можете вычесть из значения отметки времени результата $timestamp % (24*3600);Пример:

$timestamp = mt_rand(1500000000, 1600000000); 
$timestamp -= $timestamp % (24*3600);
echo date('Y-m-d H:i:s', $timestamp);

PS Но лучше использовать DateTime класс.Есть метод setTime():

$datetime = new DateTime();
$datetime->modify('+2 day');
$datetime->setTime(0, 0, 0, 0);
$timestamp = $datetime->getTimestamp();
echo date('Y-m-d H:i:s', $timestamp);
...