Как я могу получить отметку времени 12 часов сегодня, вчера и позавчера, используя функцию strtotime() в php?
12 часов - это переменная и будет изменена пользователем.
Как я могу получить отметку времени 12 часов сегодня, вчера и позавчера, используя функцию strtotime() в php?
12 часов - это переменная и будет изменена пользователем.
$hour = 12;
$today = strtotime($hour . ':00:00');
$yesterday = strtotime('-1 day', $today);
$dayBeforeYesterday = strtotime('-1 day', $yesterday);
OO Эквивалент
$oToday = new DateTime();
$oToday->setTime($iHour, 0);
$oYesterday = clone $oToday;
$oYesterday->modify('-1 day');
$oDayBefore = clone $oYesterday;
$oDayBefore->modify('-1 day');
strtotime поддерживает ряд интересных модификаторов, которые можно использовать:
$hour = 12;
$today = strtotime("today $hour:00");
$yesterday = strtotime("yesterday $hour:00");
$dayBeforeYesterday = strtotime("yesterday -1 day $hour:00");
echo date("Y-m-d H:i:s\n", $today);
echo date("Y-m-d H:i:s\n", $yesterday);
echo date("Y-m-d H:i:s\n", $dayBeforeYesterday);
Он работает как предсказано:
2011-01-24 12:00:00
2011-01-23 12:00:00
2011-01-22 12:00:00
чтобы начать день вчера
$oDate = new DateTime();
$oDate->modify('-1 day');
echo $oDate->format('Y-m-d 00:00:00');
результат
2014-11-05 00:00:00
Вы можете легко узнать любую дату, используя объект DateTime
, он настолько гибкий
$yesterday = new DateTime('yesterday');
echo $yesterday->format('Y-m-d');
$firstModayOfApril = new DateTime('first monday of april');
echo $firstModayOfApril->format('Y-m-d');
$nextMonday = new DateTime('next monday');
echo $nextMonday->format('Y-m-d');
Начиная с PHP 7 вы можете написать что-то вроде this:
$today = new \DateTime();
$yesterday = (clone $today)->modify('-1 day');
$dayBefore = (clone $yesterday)->modify('-1 day');
// Then call ->format('Y-m-d 00:00:00'); on each objects
вы также можете использовать new DateTime("now")
на сегодня new DateTime("1 day ago")
за вчерашний день, или все могут быть проанализированы с помощью strtotime php.
Затем форматируйте, как хотите.