2011-01-24 88 views
26

如何通过在php中使用strtotime()函数获取今天,昨天和前天的12点的时间戳?获取今天和昨天的时间戳在php

12点钟是一个变量,会被用户更改。

+0

取决于你如何存储12点(小时,分钟,秒?)。一般来说,你看过(http://php.net/manual/en/book.datetime.php)中列出的功能吗?你到目前为止尝试了什么? – 2011-01-24 09:24:59

+0

明确重复[获取时间戳在PHP](http://stackoverflow.com/questions/4772953/getting-timestamp-in-php) - 你已经问过昨天。唯一的区别是你传递给这些函数的参数。你可以在[PHP手册](http://de2.php.net/manual/en/datetime.formats.relative.php) – Gordon 2011-01-24 09:26:05

回答

55
$hour = 12; 

$today    = strtotime($hour . ':00:00'); 
$yesterday   = strtotime('-1 day', $today); 
$dayBeforeYesterday = strtotime('-1 day', $yesterday); 
12

的strtotime支持许多interesting modifiers可以使用:

$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 
13

OO等效

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

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

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

得到的开始昨天

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

结果

2014-11-05 00:00:00 
0

由于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 
2

您可以轻松地找到使用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

您还可以使用new DateTime("now")为今天new DateTime("1 day ago")为昨天或所有可以解析由strtotime PHP功能。

然后根据需要格式化。