2013-07-18 212 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