2011-01-24 86 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功能。

然後根據需要格式化。