Получить метку времени сегодня и вчера в php - PullRequest
30 голосов
/ 24 января 2011

Как я могу получить метку времени 12 часов сегодня, вчера и позавчера, используя функцию strtotime () в php?

12 часов - это переменная, которая будет изменена напользователь.

Ответы [ 7 ]

59 голосов
/ 24 января 2011
$hour = 12;

$today              = strtotime($hour . ':00:00');
$yesterday          = strtotime('-1 day', $today);
$dayBeforeYesterday = strtotime('-1 day', $yesterday);
13 голосов
/ 24 января 2011

OO Эквивалент

$oToday = new DateTime();
$oToday->setTime($iHour, 0);

$oYesterday = clone $oToday;
$oYesterday->modify('-1 day');

$oDayBefore = clone $oYesterday;
$oDayBefore->modify('-1 day');
12 голосов
/ 24 января 2011

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
4 голосов
/ 06 ноября 2014

, чтобы начать вчерашний день

$oDate = new DateTime(); 
$oDate->modify('-1 day'); 
echo $oDate->format('Y-m-d 00:00:00');

результат

2014-11-05 00:00:00
3 голосов
/ 10 марта 2017

Вы можете легко узнать любую дату, используя 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');
0 голосов
/ 21 марта 2017

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

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

0 голосов
/ 17 марта 2016

Начиная с 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
...