2013-07-18 400 views
15

我想發送提醒電子郵件。我不想在Linux/Unix/BSD框中使用cron或在Windows上使用計劃任務。如何減去分鐘

我想從當前時間減去15分鐘。

這裏是我到目前爲止的代碼(不工作):

$days = date("j",time()); 
$months = date("n",time()); 
$years = date("Y",time()); 
$hours = date("G",time()); 
$mins = (date("i",time())); 
$secs = date("s",time()); 
$mins = $mins-15; 

回答

24

更改日期成時間戳(以秒爲單位),然後減去15分鐘(在秒),然後再轉換回日期:

$date = date("Y-m-d H:i:s"); 
$time = strtotime($date); 
$time = $time - (15 * 60); 
$date = date("Y-m-d H:i:s", $time); 
+0

我得到了@thomas的最佳答案 –

4

如何轉換之前從時間()從其減去15分鐘呢?

$time = time() - (15 * 60); 

然後在代碼中使用$ time而不是time()。

29

從當前時間減去15分鐘後,你可以使用strtotime()

$newTime = strtotime('-15 minutes'); 
echo date('Y-m-d H:i:s', $newTime); 
+3

強烈建議這個解決方案更加優雅和表達。 – Andreyco

+0

太棒了!應該是被接受的! –

2

嘗試使用

$min = time() - 900; //900 seconds = 15 minutes 
22

您可以使用DateInterval

$date = new DateTime(); 
$interval = new DateInterval("PT15M"); 
$interval->invert = 1; 
$date->add($interval); 
echo $date->format("c") . "\n"; 
+1

這應該是額定的方式更高,謝謝! – loafer

+1

如果您將時區指定爲DateTime對象的一部分,此解決方案也會更好。 – dchayka

2
$currentTime = date('Y-m-d H:i:s'); 
$before15mins = strtotime('-15 minutes'); 
echo date('Y-m-d H:i:s', $before15mins); 
2

以下是你可以天/小時/分/秒增加至當前時間

$addInterval = date('Y-m-d H:i:s', strtotime("+$days days $hours hours $minute minute $sec second", strtotime(currentTime))); 
3

的方式,你可以試試這個爲好,

$dateTimeMinutesAgo = new DateTime("15 minutes ago"); 
$dateTimeMinutesAgo = $dateTimeMinutesAgo->format("Y-m-d H:i:s"); 
+0

非常簡單。應該是被接受的答案。 – GustavoMP