43

我想发送提醒电子邮件。我不想cron在 Linux/Unix/BSD 机器上使用或在 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;
4

14 回答 14

53

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

$newTime = strtotime('-15 minutes');
echo date('Y-m-d H:i:s', $newTime);
于 2013-07-18T08:06:16.367 回答
52

将日期更改为时间戳(以秒为单位),然后减去 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);
于 2013-07-18T08:07:08.963 回答
41

您可以使用DateInterval

$date = new DateTime();
$interval = new DateInterval("PT15M");
$interval->invert = 1;
$date->add($interval);
echo $date->format("c") . "\n";
于 2013-07-18T08:07:32.200 回答
21

你也可以试试这个

$dateTimeMinutesAgo = new DateTime("15 minutes ago");
$dateTimeMinutesAgo = $dateTimeMinutesAgo->format("Y-m-d H:i:s");
于 2016-02-10T19:36:39.497 回答
8

在转换之前从 time() 中减去 15 分钟怎么样?

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

然后在您的代码中使用 $time 而不是 time() 。

于 2013-07-18T08:05:27.547 回答
6
$currentTime = date('Y-m-d H:i:s');
$before15mins = strtotime('-15 minutes');
echo date('Y-m-d H:i:s', $before15mins);
于 2013-07-18T08:10:05.487 回答
4

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

  $addInterval = date('Y-m-d H:i:s', strtotime("+$days days $hours hours $minute minute $sec second", strtotime(currentTime)));
于 2014-03-28T06:45:28.423 回答
4

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

echo date('Y-m-d H:i:s', strtotime('-15 minutes'));
于 2020-06-23T16:25:18.193 回答
2

尝试使用

$min = time() - 900; //900 seconds = 15 minutes 
于 2013-07-18T08:06:33.483 回答
2

您还可以使用 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');?>
于 2019-02-26T05:14:59.133 回答
1

要减去 15 分钟,您可以:

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

您可以将 15 替换为所需的分钟数。

如果您想减少秒数,您可以简单地执行以下操作:

date('Y-m-d H:i:s', (time() - 10));

这样,您将减去 10 秒。

于 2020-04-24T06:58:15.237 回答
0

If you have only time value than below will be useful

// Your time
$time = '12:15:00';

// Returned value '12:00:00'
$newTime = date('H:i:s', strtotime($time) - (15*60));
于 2021-11-09T08:41:07.217 回答
0

我知道这个问题已经过时了,但我只想分享我是如何以简单的方式做到的

$current = new DateTime("10 minutes ago", new DateTimeZone('Asia/Manila') );

echo $current->format("Y-m-d H:i:s");
于 2021-10-15T08:26:54.360 回答
-1
//To Get Current DateTime
$currentDate = date("Y-m-d H:i:s");

//To Get Current DateTime - 15Min
$oldDate = date("Y-m-d H:i:s", strtotime($currentDate) - (15 * 60));

echo $currentDate;
echo $oldDate;
于 2019-08-27T09:23:08.903 回答