Получите отметку времени сегодня и вчера в php

Как я могу получить отметку времени 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("Ymd H:i:s\n", $today); echo date("Ymd H:i:s\n", $yesterday); echo date("Ymd 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('Ymd 00:00:00'); 

результат

 2014-11-05 00:00:00 

Вы можете легко узнать любую дату, используя объект DateTime , он настолько гибкий

 $yesterday = new DateTime('yesterday'); echo $yesterday->format('Ym-d'); $firstModayOfApril = new DateTime('first monday of april'); echo $firstModayOfApril->format('Ym-d'); $nextMonday = new DateTime('next monday'); echo $nextMonday->format('Ym-d'); 

Начиная с PHP 7 вы можете написать примерно так:

 $today = new \DateTime(); $yesterday = (clone $today)->modify('-1 day'); $dayBefore = (clone $yesterday)->modify('-1 day'); // Then call ->format('Ymd 00:00:00'); on each objects 

вы также можете использовать new DateTime("now") на сегодня new DateTime("1 day ago") за вчерашний день или все могут быть проанализированы с помощью функции strtotime php.

Затем отформатируйте, как хотите.