如何减少分钟数

45

我希望发送一封提醒邮件。但我不想在 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;
16个回答

58

要从当前时间减去15分钟,您可以使用strtotime()

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

3
强烈建议采用这种解决方案,更加优雅而且表达力更强。 - Andreyco

54

将日期转换为时间戳(以秒为单位),然后减去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);

41

您可以使用DateInterval

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

3
如果在DateTime对象中指定时区,这个解决方案将会更好。 - dchayka
3
这里提供了一种更易读的 DateInterval 创建方式:$interval = DateInterval::createFromDateString('-15 minutes'); - fracz

26

你也可以尝试这个方法,

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

1
非常简单明了。应该被接受的答案。 - undefined

8
如何在转换之前从时间(time())中减去15分钟?
$time = time() - (15 * 60);

接下来在你的代码中使用 $time,而不是 time()。


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

6

您也可以使用strtotime函数来从当前时间中减去天数、小时和/或秒数。

echo date('Y-m-d H:i:s', strtotime('-15 minutes'));

4

以下是您可以将天数/小时/分钟/秒添加到当前时间的方法

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

3

您也可以使用DateInterval对象

<?php
    $date = new DateTime('Y-m-d H:i:s');
    $date->sub(new DateInterval('PT10H30S'));
    echo $date->format('Y-m-d H:i:s');?>

也许可以添加一些解释这些代码的作用?对于新手来说可能不太清楚。 - Erenor Paz

3

要减去15分钟,可以这样做:

date('Y-m-d H:i:s', (time() - 60 * 15));

你可以将15替换为你想要的分钟数。
如果你想减去秒数,只需简单地执行以下操作:
date('Y-m-d H:i:s', (time() - 10));

以此方式你会减去10秒。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接